Android Studio 里的Cannot resolve symbol XXX

Android

I.背景

事情是這樣,一個(gè)同事更新替換了一個(gè)第三方合作商的aar包,并且push到了服務(wù)器,我pull下來(lái)后可以正常編譯打包出apk,似乎一切都是正常的,但是當(dāng)我打開(kāi)用到這個(gè)aar包里的某些類(lèi)的類(lèi)時(shí)發(fā)現(xiàn)有些地方紅色的,鼠標(biāo)放上去提示:“Cannot resolve symbol XXX”。

II.現(xiàn)象

Android Studio 無(wú)法識(shí)別同一個(gè) package 里的其他類(lèi),或者無(wú)法識(shí)別某些方法,將其顯示為紅色,但是 compile 沒(méi)有問(wèn)題。鼠標(biāo)放上去后顯示 “Cannot resolve symbol XXX”,重啟 Android Studio,重新 sync ,Clean build 都沒(méi)有用。

III.原因

  1. 一個(gè)原因可能是因?yàn)?Android Studio 之前發(fā)生了錯(cuò)誤,某些 setting 出了問(wèn)題;
  2. 替換的aar包沒(méi)有更新版本號(hào),導(dǎo)致AS識(shí)別到的是本地緩存的版本(我遇到的就是這個(gè)場(chǎng)景),但是 compile 的時(shí)候使用的是正確的版本,所以就出現(xiàn)了有些類(lèi)或者方法提示無(wú)法識(shí)別但還是可以正常編譯打包。

打開(kāi)這個(gè)類(lèi)提示 .class 文件與 .java 文件不匹配。

IV.解決方法

這看起來(lái)是緩存引起的錯(cuò)誤,那就清空緩存試試唄。

  1. 點(diǎn)擊菜單中的 “File” -> “Invalidate Caches / Restart”,然后點(diǎn)擊對(duì)話框中的 “Invalidate and Restart”,清空 cache 并且重啟。等待重啟后基本上剛才的錯(cuò)誤就沒(méi)有了。

  2. 如果還是沒(méi)有解決,那可以嘗試將依賴先去掉,sync gradle,接著再將依賴添加回來(lái),sycn gradle,這個(gè)時(shí)候多半就正常了,我的環(huán)境就需要第二步才正常。

V.本地緩存

我們知道,當(dāng)通過(guò)gradle構(gòu)建項(xiàng)目時(shí),會(huì)將一些遠(yuǎn)程依賴緩存到本地,默認(rèn)的緩存目錄如下:

  1. Mac OS: /Users/username/.gradle/caches
  2. Windows: C:\Users\username\.gradle\caches

如果你不想用上面的解決方法,也可以嘗試直接到文件系統(tǒng)刪除相應(yīng)的緩存文件,只不過(guò)這種方式我沒(méi)有實(shí)踐過(guò)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容