gpt4 book ai didi

android - Gradle Android 插件为不同的产品口味生成 R 文件?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:42:33 28 4
gpt4 key购买 nike

我正在尝试合并我的免费应用和付费应用。 Android 新构建系统的 productFlavors 似乎非常适合我的问题。

我的 freeApp 风格运行良好,但是当我构建付费应用风格时,生成的 R 文件位于 freeApp 中定义的包结构中。

这是 gradle.build 文件的一个 fragment :

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 文件的位置是由 list 中的包名称定义的。我已验证 list 文件是否正确生成。

问题是两种风格的 R 文件位于同一位置。 Gradle 要求 list 位于主源代码树中,因此无论我放入主源代码树中的 list 版本是生成 R.java 文件的位置。

假设我让 R 文件在每种口味的正确位置生成;应该如何管理 R 文件的导入语句,以便每种风格都引用正确的 R 文件?

这是我的项目结构的屏幕截图:

enter image description here

每个 AndroidManifest.xml 文件都是完整的 list - 根据文档,主树中的 list 应该完全覆盖产品 flavor 版本。虽然,这显然没有发生,因为应该启动的 Activity 和内容提供者没有被覆盖。

任何对我做错的见解都将不胜感激。这一定是一种非常普遍的情况,任何人覆盖 packageName 都会遇到。大约一个星期以来,我一直在努力解决这个问题,但我自己似乎无法解决问题。

谢谢,

-亚伦

最佳答案

在 android 的 gradle 插件 0.7.3 下,生成的 R.java 文件是 onlysrc 制作的/main 的包名。它包含不同风格的所有资源,只是将它们放入一个生成的 R.java 文件中。我从an IO talk听说的.

src/main/AndroidManifest.xml 中的包名称是什么?我的猜测是它是 com.flyingspheres.android

尝试在需要使用src/main 的包名以编程方式访问资源的类中导入 R

例如

import com.flyingspheres.android.R;

关于android - Gradle Android 插件为不同的产品口味生成 R 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19736212/

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