gpt4 book ai didi

android - 将属性传递给 Android 库项目构建文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:10:37 26 4
gpt4 key购买 nike

我有一个分为免费版和付费版的 Android 应用项目。这两个项目的所有共同点都位于一个名为“核心”的 Android 库项目中。然后我有付费版和免费版的实际 Android 应用程序项目。

我正在使用 Ant 脚本构建这两个 APK。付费版本设置一个属性,告诉“核心”项目付费版本正在构建。免费版本告诉核心项目免费版本正在构建。

在谷歌决定发布 ADT 22 之前,它曾经工作得很好。现在“核心”项目不再选择这些构建属性。

我怀疑库项目现在是在单独的 Ant 构建环境/进程中构建的。

所以这是我的问题:如何在应用项目的 build.xml 文件中为引用的 Android 库项目定义属性?如何将属性传递给这些库项目构建?

在 SDK 的 build.xml 文件中,库项目实际编译的位置在哪里?我想这将是研究的正确地点。

感谢您的宝贵时间。

最佳答案

编辑澄清

您必须创建原始文件的修改副本 build.xml来自 Android SDK 的文件(请参阅 SDK-Folder/tools/ant),并且当 Google 通过合并差异(当然并保留自己的修改)发布 ADT 更新时,不时地使它保持最新。

build.xml文件使用 <subant> 构建库项目任务,它基本上启动一个单独的构建环境,该环境不会自动查看调用范围的任何属性(这将是应用程序项目的构建环境)。

但是,在那subant之内标记,您可以使用 <propertyset> 将调用者范围的属性导出到库的构建 XML标签。在您的 build.xml 副本中查找以下代码块并进行如下修改:

....
<echo level="info">Building Libraries with '${project.libraries.target}'...</echo>

<!-- no need to build the deps as we have already
the full list of libraries -->
<subant failonerror="true" buildpathref="project.library.folder.path" antfile="build.xml">

<!-- *** ADD THIS: *** -->
<propertyset id="project.library.buildargs">
<propertyref prefix="project.library.buildargs" />
</propertyset>

<target name="nodeps" />
<target name="${project.libraries.target}" />
<property name="emma.coverage.absolute.file" location="${out.absolute.dir}/coverage.em" />
</subant>
....

以上示例使所有应用程序项目 build.xmlproject.library.buildargs. 为前缀的属性对所有引用的 Android 库构建脚本可见。

关于android - 将属性传递给 Android 库项目构建文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16843525/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com