Android Studio构建项目时compileDebugKotlin任务报错Unbound symbols not allowed
问题解决方法
该错误属于Kotlin编译器内部异常,核心原因是Kotlin IR生成阶段存在无法识别的绑定符号,大概率是增量编译缓存损坏、新增代码存在隐式的类引用错误,或者你当前使用的AGP与Kotlin版本存在兼容性问题,可按以下步骤依次排查解决:
步骤1:清除缓存重建项目
这是解决此类编译器内部错误优先级最高的方案:
- 打开Android Studio,点击左上角菜单栏
File > Invalidate Caches... - 勾选
Clear file system cache and local history选项,点击Invalidate and Restart等待IDE重启 - 重启后在项目根目录执行清理命令:
- Mac/Linux环境执行:
./gradlew clean - Windows环境执行:
gradlew.bat clean
- Mac/Linux环境执行:
- 清理完成后正常执行构建操作即可
步骤2:排查新增的MVVM页面代码
错误提示的<ERROR CLASS>说明存在未找到的类引用,重点检查你新增页面的以下内容:
- ViewModel、Model、布局绑定类的引用是否存在拼写错误,是否有还未创建就提前引用的类
- 如果使用了DataBinding/ViewBinding,检查XML文件中绑定的类路径是否正确,导包是否存在拼写错误
- 是否存在私有/
internal修饰的类被跨模块引用的情况,Kotlin 1.5.20存在处理跨模块私有符号的已知bug
步骤3:修复版本兼容性问题
你当前使用的AGP 4.2.2与Kotlin 1.5.20存在已知的兼容性冲突,可任选以下一种方案调整:
- 将Kotlin版本从1.5.20降级到1.5.10,该版本和AGP 4.2.2兼容性经过验证
- 全局统一
kotlin-stdlib依赖为jdk8版本,避免不同模块混用jdk7和jdk8版本的std库
如果以上操作都无法解决,可以临时在项目根目录的gradle.properties文件中添加配置kotlin.incremental=false关闭增量编译,规避增量编译的缓存bug,构建成功后可改回原有配置。
内容的提问来源于stack exchange,提问作者Marlon López
相关产品推荐
相关产品推荐

