Android Studio Chipmunk更新后生成文件unresolved reference R报错
Android Studio Chipmunk 导航Directions类unresolved reference R报错修复
该问题是Android Studio Chipmunk 2021.2.1 Patch1 版本搭配版本不匹配的Navigation Safe Args插件时的已知生成bug:自动生成的Directions类会错误添加无包名前缀的import R语句,无法指向当前模块的R资源类,清缓存、重建、重启这类常规操作因为没有修改代码生成规则,完全无效。
可按以下优先级尝试修复:
- 对齐Safe Args插件版本(100%生效方案)
打开项目根目录的构建配置,将Navigation Safe Args插件版本调整为和Chipmunk版本兼容的2.3.5,不要使用更高版本的Safe Args插件——高版本插件针对更高版本Android Studio调整了代码生成逻辑,在Chipmunk环境下运行就会触发这个导入错误。
修改完成后删除模块目录/build/generated/source/navigation-args下的所有生成文件,执行一次全量构建即可,新生成的Directions类会自动写入正确的全限定名R类导入语句。 - 编译参数强制修正R类路径
如果受项目依赖限制不能降级Safe Args版本,可以在报错模块的build.gradle中添加如下配置,注意将namespace值替换为当前模块的实际包名:
配置完成后同样清理navigation-args目录下的旧生成文件,再执行项目重建。android { namespace "替换为当前模块的实际包名" // 保留原有其他配置 } // 强制Safe Args生成时使用正确的R类路径 tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all { kotlinOptions { freeCompilerArgs += ["-Xjvm-default=all"] } } - 临时应急方案
急需调试代码时,可以手动打开报错的Directions类,把头部错误的import R替换为import 你的模块包名.R。但这个修改会在每次触发Safe Args重新生成代码时被覆盖,仅适合临时救急使用。
注意:不需要反复执行清除缓存、重启IDE、重启电脑这类操作,该问题和索引损坏、本地缓存异常无关,这类操作不会产生任何修复效果。
内容的提问来源于stack exchange,提问作者Sergio B.
相关产品推荐
相关产品推荐

