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

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

第1种可能的情况

原因:

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

[常见Bug]Kotlin,编译报错“Unresolved reference: ......”的解决方法_第1张图片

可以看到,当前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即可。

你可能感兴趣的:(Android进阶实践)