Gradle 8 - R 文件合并不再起作用?

pro*_*m85 8 android gradle

在我的项目中,我在核心模块中定义了许多字符串。升级到 gradle 8 后,我发现我现在需要引用 R 文件。

例如,如果我在核心模块中定义一个字符串并希望从主模块访问它(主模块当然包括核心模块),我会看到以下行为:

com.my.package.main.R我可以通过和从主模块内的核心模块访问字符串(以及所有其他资源)com.my.package.core.R

现在我只能再从确切的模块访问字符串,所以我需要com.my.package.core.R在主模块内部使用从核心模块访问字符串......

com.google.android.material.R对于来自和 的属性也会发生同样的情况androidx.appcompat...


我错过了迁移步骤吗?或者这真的应该是这样吗?

Tho*_*mmy 18

使用 AGP 8,默认行为确实发生了变化:请参阅https://developer.android.com/build/releases/gradle-pluginandroid.nonTransitiveRClass中的 选项

android.nonTransitiveRClass

新默认值:true 旧默认值:false

AGP 8.0 仅为当前模块中定义的资源生成 R 类。

  • 多谢。这修复了我的项目。转到 gradle.properties 并添加 android.nonTransitiveRClass=false 以合并来自其他模块或库的 R。 (2认同)