You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gradle 8升级后R文件合并失效?跨模块资源需精准引用

Gradle 8 下必须精准引用R文件的原因说明

这是Gradle 8(搭配Android Gradle Plugin 8.0+)的正常默认行为,不是遗漏了迁移步骤,核心原因是AGP 8.0默认开启了严格的资源隔离与命名空间管控:

  • 资源合并规则变更:AGP 8.0之前,依赖模块的资源会自动合并到主模块的R文件中,所以你能通过com.my.package.main.R访问core模块的资源;但AGP 8.0之后,每个模块的资源只会生成在自身命名空间的R文件里,主模块不再自动合并依赖模块的资源到自身R中,必须直接引用依赖模块的完整R路径(比如com.my.package.core.R)。

  • 第三方库资源引用逻辑一致:com.google.android.material.R和androidx.appcompat的属性需要精准引用,也是同样的道理——AGP 8.0不再允许通过主模块R间接访问这些库的资源,必须直接指定对应库的命名空间R文件。

如果确实需要恢复旧的资源合并行为(不推荐,会增加资源冲突风险),可以在主模块的build.gradle(或build.gradle.kts)中添加以下配置:

android {
    namespace "com.my.package.main"
    // 关闭严格资源隔离,恢复依赖模块资源合并到主模块R的行为
    resourcePrefix ""
    dependenciesInfo {
        includeInApk true
        includeInBundle true
    }
}

不过官方强烈建议保持默认的严格资源隔离,这能避免不同模块、第三方库之间的资源命名冲突,对大型项目的架构长期维护更友好。

内容的提问来源于stack exchange,提问作者prom85

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 15:49:57