我试图阅读以下内容的project.properties。我已经使用了带有前缀的属性,但无法达到我的观点。
target=android-17
android.library.reference.1=submodules/Switchbar
android.library.reference.2=submodules/Volley
android.library.reference.3=libs/ActionBar/library
我只想获取字符串或列表[子模块/开关栏,子模块/开关栏,库/动作栏/库],并尝试将它们用于其他需求。
谢谢。
你可以写一个sinle属性,比如
android.library.reference=submodules/Switchbar,submodules/Volley,libs/ActionBar/library
并在您的构建中使用它.xml。
例如,可以使用<for>
或<foreach>
循环访问列表并对每个项执行代码。您可以直接在某些任务中使用它,因为它们本身支持这种"逗号分隔列表"(例如 include
和<zip>
的exclude
)。
如果要保持当前方式(编写具有相同前缀的多个属性),则可以使用 <script>
在 ant 构建文件中编写脚本来处理属性。你可以使用ruby,python,Beanshell(Java),groovy等。也可以使用这种方式来处理单个属性。
因此,您最好就您的问题发布更多内容:您的"其他要求"是什么?您将如何使用属性或"列表"?
Android 的 ant 构建文件对此有一个预定义的任务:
<getlibpath projectPath="${any.path.to.android.project}" libraryFolderPathOut="full.project.library.path.list" />
它返回特定构建中涉及的所有库项目(包括 lib 项目的 lib 项目)。
之后可用
<import file="${sdk.dir}/tools/ant/build.xml"/>
它自动包含在初始构建脚本中(运行android update project -p <path-to-android-project>
后)
更准确地说,"${sdk.dir}/tools/ant/build.xml的下一部分使魔术变得神奇(我直接在我的构建脚本中包含getlibpath)
<!-- jar file from where the tasks are loaded -->
<path id="android.antlibs">
<pathelement path="${sdk.dir}/tools/lib/ant-tasks.jar" />
</path>
<!-- Custom tasks -->
<taskdef resource="anttasks.properties" classpathref="android.antlibs" />