【发布时间】:2013-05-30 18:34:57
【问题描述】:
我有一个 Android 应用项目,它分为免费版和付费版。这两个项目共有的所有内容都位于一个名为“core”的 Android 库项目中。然后,我有付费版和免费版的实际 Android 应用项目。
我正在使用 Ant 脚本来构建这两个 APK。付费版本设置了一个属性,告诉“核心”项目付费版本正在构建。免费版告诉核心项目免费版正在构建中。
在 Google 决定发布 ADT 22 之前,它曾经工作得非常好。现在“核心”项目不再使用这些构建属性。
我怀疑库项目现在是在单独的 Ant 构建环境/进程中构建的。
所以这是我的问题:如何在应用项目的 build.xml 文件中为引用的 Android 库项目定义属性?如何将属性传递给这些库项目构建?
SDK 的 build.xml 文件中的什么地方实际编译了库项目?我想这将是正确的研究地点。
感谢您的宝贵时间。
【问题讨论】:
-
您能描述一下这些属性的用途吗?也许有另一种解决方案......(附言我感到你的痛苦。我一直在努力解决完全相同的情况,试图在不复制太多代码的情况下构建一个应用程序的两个版本。)
-
@Code-Guru 我同意,这很痛苦。我记得半年前曾为此苦苦挣扎,每次当 ADT 获得重大更新时,您都必须重新编写构建脚本。回答您的问题:这些属性用于创建具有静态布尔标志的动态生成的 Java 类文件。这些标志用于打开/关闭核心项目中的代码部分。这两个标志是“IS_PAID_VERSION”用于激活许可验证代码,另一个“IS_DEBUG”用于激活非常详细的日志记录。
-
我也遇到了同样的问题,最近有解决方案吗?
-
@nish1013 我在下面编辑了我的答案,以便更清楚地说明如何解决该问题。