常見Bug]Kotlin,編譯報錯“Unresolved reference: ......”的解決方法

老是報錯不知道什麼原因 查了一下終於知道了 原來是打錯了 不過還是記錄一下

 

版權聲明:本文爲博主原創文章,轉載請註明本文源鏈接 https://blog.csdn.net/RobotHost/article/details/78134653

注:第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即可。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章