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

应用com.android.library插件后R资源引用报错是什么原因?

问题原因

  • 包名冲突导致R类引用指向错误:
    你使用的Android Studio Arctic Fox对应AGP版本在处理未显式配置namespace的Android库模块时,启用com.android.library插件后会默认生成与主app模块同包名的R类。你的app模块applicationId为com.foo.networkdiagnostics,MainActivity所在包也是该路径,此时代码中引用的R会优先匹配library模块生成的R类。但你的library模块是空模块,没有任何布局、id等资源,生成的R类中不存在layout.activity_main、id.sample_text这类常量,因此会抛出未找到引用的报错。
  • 当你注释掉library模块的com.android.library插件配置后,该模块不再被识别为Android库模块,不会生成同名R类,此时MainActivity中引用的R会自动指向app模块自身生成的、包含所有资源的R类,报错自然消失。

解决方案

  1. 给library模块配置独立的namespace
    在:library模块的build.gradle中补充完整配置,指定和app模块不同的namespace即可解决冲突:
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'

android {
    // 设置和app模块不同的命名空间
    namespace "com.foo.networkdiagnostics.library"
    compileSdk 31
    defaultConfig {
        minSdk 26
        targetSdk 31
    }
}
  1. 若暂时不需要使用library模块的Android能力,保持插件配置注释即可。
  2. 若需要同时引用两个模块的资源,在代码中显式区分导入即可:app模块资源用import com.foo.networkdiagnostics.R,library模块资源用import 你的library包名.R。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:24:01