【发布时间】:2012-03-21 08:18:00
【问题描述】:
我正在努力寻找为 6 多个不同客户构建/打包 Android 应用的最佳方式。我可以在 SVN 中为所有客户使用不同的分支,但应用程序之间的唯一区别是资源文件夹中的一些值(可绘制对象、字符串等)。
我编写了一个导入标准 Android build.xml 的 ant 脚本。该脚本执行以下操作:
- 从属性文件中读取客户名称。
- 为每位客户执行以下操作:
- AndroidManifest.xml 中的包名称已更改(通过挂钩到 -pre-build 目标)。
- 自定义资源被复制到构建中的 res 目录中(通过挂钩到 -pre-compile 目标)。
- 包名改回默认值(通过挂钩到 -post-compile 目标)。
- APK 被复制到名为 customer-versionno.apk 之类的特定位置。
这似乎运作良好,直到我刚刚编写了更改包名称的部分。由于包名称更改,R 类的位置也发生了更改,这意味着构建失败,因为 Java 类从标准包中导入了 R 类。 p>
我不想有一个更改代码的构建脚本。我希望能够通过对任何文件的最小更改来做到这一点。
Soo..问题是真的:
- 我的问题有什么好的/简单的解决方案吗?
- 我是否以错误的方式处理此问题?有没有更好的方法可以轻松地将同一个应用打包给超过 6 个不同的客户?
【问题讨论】:
-
“外部定义”怎么样?
-
@lulumeya 我不确定我是否明白你的意思..?
-
另外,这很容易通过 Maven 实现。看看我的回答here。
标签: android ant build-automation