构建Release版App Bundle时遇ListTileNativeAdFactory.kt中R引用未解析错误
解决Release构建中"Unresolved reference: R"编译错误
构建Release版本App Bundle时,出现以下编译错误:
e: ...\ListTileNativeAdFactory.kt: (19, 22): Unresolved reference: R e: ...\ListTileNativeAdFactory.kt: (23, 40): Unresolved reference: R e: ...\ListTileNativeAdFactory.kt: (25, 40): Unresolved reference: R e: ...\ListTileNativeAdFactory.kt: (27, 52): Unresolved reference: R e: ...\ListTileNativeAdFactory.kt: (39, 55): Unresolved reference: R e: ...\ListTileNativeAdFactory.kt: (43, 51): Unresolved reference: R FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:compileReleaseKotlin'.错误表现为
ListTileNativeAdFactory.kt文件中多处引用R类失败,最终终止构建。
以下是针对性的解决步骤:
- 校验R类导入:确认
ListTileNativeAdFactory.kt顶部导入的是项目自身的R类(import 你的应用包名.R),避免误导入android.R(系统R类会覆盖自定义资源类)。 - 清理重建项目:执行Gradle命令清除旧构建缓存并重新编译Release版本:
# Windows系统 gradlew clean assembleRelease # Mac/Linux系统 ./gradlew clean assembleRelease - 排查资源文件问题:Release构建对资源校验更严格,检查
res目录下是否存在命名不规范、重复资源、XML语法错误(如未闭合标签),这类问题会导致R类无法正常生成。 - 调整Build配置:
- 确保
app/build.gradle中Release变体的buildConfigEnabled设为true; - 若开启了
minifyEnabled,需在ProGuard/R8规则中添加保护R类的配置:-keep class 你的应用包名.R { *; } -keep class 你的应用包名$R$* { *; }
- 确保
- 检查模块依赖:如果
ListTileNativeAdFactory.kt属于子模块,确认子模块已正确依赖主应用模块,且导入的是子模块自身的R类(import 子模块包名.R)。
内容的提问来源于stack exchange,提问作者Mahender Kumar
相关产品推荐
相关产品推荐

