[常见Bug]Kotlin,编译报错“Unresolved reference: ......”的解决方法

注:第1、2种情况较常见

第1种可能的情况

原因:

Android Studio中目前的Kotlin插件版本 和 kotlin-gradle-plugin版本不一致。当版本不一致时,检查build.gradle中配置时会有提示,如下图:

不一致

可以看到,当前Gradle配置是1.1.3-2,而ide的插件版本已经升级到了1.1.51。

解决方法:
  1. 根据ide Kotlin插件版本,将build.gradle中kotlin-gradle-plugin版本修改为最新的版本号即可。
  2. 如重编译后未生效未解决,则因为1.1.51版本的gradle插件未下载,可重新启动项目即会自动下载,待下载完成后,gradle自动编译完成即不会再报此类错误。

第2种可能的情况

原因:

ide 某种bug

解决方法:
  1. File –> Invalifate caches/Restart –> Invalifate and Restart;
  2. 更新Android studio;更新Kotlin Plugin;如果用到了Anko,同时更新Anko Plugin。重启;
  3. build.gradle中Anko包版本修改为最新,例如:anko_version = ‘0.10.1’。有些时候build.gradle中不会提示当前Anko是否未最新,这时可以先去更新最新的ide的Anko plugin ,ide的Anko plugin 版本号一般会和Anko包版本号相同,这时可以根据ide的Anko plugin版本号直接填写build.gradle中Anko包版本号,rebuild自动下载和编译即可。

这种情况是我遇到的,最终检查后,发现是因为Anko不是最新版本导致的android.R资源在Anko写法时无法引用,但是在kt代码中并不会报错,故不易找到原因。


第3种可能的情况

原因:

有些时候,因为之前同一项目的Android Strudio关闭时,未正常关闭(如正在编译时关闭),导致该项目仍被java编译器占用;当重新打开该项目是,此时再编译会重启一个编译进程,未正常关闭的进程和新的进程相冲突,可能导致无法编译相关资源的引用关系。

解决方法:
  1. 结束pc中所有android studio相关的、java相关的进程,然后重新打开Android Strudio打开这个项目,rebuild即可。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值