我想合并我的免费应用程序和付费应用程序.Android新构建系统的productFlavors似乎非常适合我的问题.
我的freeApp风格很好用,但是当我构建paidApp风格时,生成的R文件是在freeApp中定义的包结构中.
这是gradle.build文件的一个片段:
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"
}
Run Code Online (Sandbox Code Playgroud)
我一直认为R文件的位置是由清单中的包名定义的.我验证了清单文件正确生成.
问题是这两种风味的R文件位于同一位置.Gradle要求清单存在于主源代码树中,因此无论我在主源代码树中放置哪个版本的清单,都将生成R.java文件.
假设我在每个风味的正确位置生成R文件; 如何管理R文件的import语句,以便每个flavor引用正确的R文件?
这是我的项目结构的屏幕截图:

每个AndroidManifest.xml文件都是完整且完整的清单 - 根据文档,主树中的清单应完全覆盖产品风味版本.虽然,显然没有发生,因为应该启动的活动和内容提供商没有被覆盖.
对我所做错的任何见解都会非常感激.这必须是一个非常常见的情况,任何覆盖packageName的人都会遇到这种情况.我一直试图弄清楚它已经出现了大约一个星期,而且似乎无法独自实现.
谢谢,
-Aaron
Tim*_*ist 10
在android的gradle插件0.7.3下,生成的R.java文件仅用于src/main包的名称.它包含了不同风格的所有资源,它只是将它们放入一个生成的R.java文件中.我在IO谈话中听到了这个消息.
你的包裹名称是src/main/AndroidManifest.xml什么?我的猜测就是它com.flyingspheres.android
尝试使用您的软件包名称以编程方式导入 R需要访问资源的类src/main.
例如
import com.flyingspheres.android.R;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2736 次 |
| 最近记录: |