【发布时间】:2013-11-13 05:04:49
【问题描述】:
我正在尝试合并我的免费应用和付费应用。 Android 新构建系统的 productFlavors 似乎非常适合我的问题。
我的 freeApp 风格运行良好,但是当我构建paidApp 风格时,正在生成的 R 文件位于 freeApp 中定义的包结构中。
这是来自 gradle.build 文件的 sn-p:
productFlavors {
freeApp {
versionCode 201308020
versionName "2.0.13_free"
packageName "com.flyingspheres.android"
}
paidApp {
versionCode 201305110
versionName "2.0.10_paid"
packageName "com.flyingspheres.android.inventory"
}
我一直认为 R 文件的位置是由清单中的包名定义的。我验证清单文件生成正确。
问题在于两种风格的 R 文件位于同一位置。 Gradle 要求清单存在于主源代码树中,因此无论我放在主源代码树中的清单版本如何,都会生成 R.java 文件。
假设我让 R 文件在每个风味的正确位置生成;应该如何管理 R 文件的导入语句,以便每种风格都引用正确的 R 文件?
这是我的项目结构的屏幕截图:
每个 AndroidManifest.xml 文件都是完整且完整的清单 - 根据文档,主树中的清单应完全覆盖产品风味版本。虽然,这显然不会发生,因为应该启动的活动和内容提供者没有被覆盖。
对于我做错了什么的任何见解将不胜感激。这必须是任何覆盖 packageName 的人都会遇到的非常常见的情况。我已经尝试了大约一周的时间,但我似乎无法自己解决。
谢谢,
-亚伦
【问题讨论】: