安卓解決資源文件錯誤的終極解決方案(很有效)

前言


昨天幫我們公司的同事解決一個問題, 他開始給我弄一個eclipse版本的代碼,但是由于代碼質(zhì)量是真的不咋地,又是eclipse結(jié)構(gòu)的代碼, 所以我想給他的代碼進(jìn)行移植,導(dǎo)入成AS能夠識別的方式進(jìn)行編譯,由于我對AS的IDE解決錯誤比較有心得,因為這樣做了. 但是中途出現(xiàn)一個錯誤,這個錯誤是從未見過的,搜遍了全網(wǎng),無論百度還是谷歌,都沒有找到我的答案, 因此我把解決方案分享給大家,希望給大家遇到這種問題時,提供一個可行性的思路.


錯誤記錄

duplicate symbol in table with resource type 'id' and symbol name ' '
image.png

眾所周知, 從eclipse的代碼轉(zhuǎn)換到AS中, 肯定會出現(xiàn)各種奇葩問題, 但是作為一個很久沒碰eclipse的人,肯定不一定能夠記得之前eclipse的坑了, 但是我有信心在AS上遇到問題可以解決,但是這一次, 我發(fā)現(xiàn)它完全是沒有任何標(biāo)記可言的,下面我把解決問題的一些想法和思路都說一下,或者能夠為你們提供解決其他類似問題提供解決方案.(大家不要覺得不耐煩, 遇到問題就要細(xì)心去留意每一個可能點)

方案一: 執(zhí)行run with --stacktrace

友情提示: 新版本可能不好找到出現(xiàn)直接執(zhí)行這個的地方,大家可以試試先看方案三.那里有一些提示.

image.png

其實它完整的命令是這個 gradlew --stacktrace
image.png

但是我們得到的結(jié)果是這樣, 從這個錯誤信息來看,我們沒法通過錯誤信息能夠直觀找出錯誤,因此,我繼續(xù)嘗試,運行提示出來的編譯命令


image.png

方案二: 執(zhí)行更詳細(xì)查看錯誤信息的命令

其中完整命令是這樣的.
gradlew --info --debug --stacktrace

我們得到的結(jié)果是這樣的

image.png

方案三: 執(zhí)行build命令,如下圖所示

打開AS右邊的側(cè)邊欄Gradle

image.png

很多新手朋友,更新AS 3.2以上的版本 ,發(fā)現(xiàn)方案一方案二的命令再也找不到了.其實這個命令執(zhí)行之后, 你會發(fā)現(xiàn), 確實可以完全顯示出來. 不信,你看下圖.
image.png

從以上的錯誤信息看來,我們還是無法直接找出錯誤信息,
Duplicate symbol in table with resource type 'id' and symbol name ' '
心里真的無語了 ,為什么這個錯誤這么坑? TMD ,氣死我了, 老子去百度,谷歌 行了吧?
結(jié)果百度谷歌一圈后, 泄氣了, 完全沒法解決啊,他們的方法和我都不一樣,怎么辦?

強迫自己冷靜下來,從錯誤信息提示,唯一能夠確定的是資源文件錯了問題, 至于是哪個資源文件出錯, 我們還無法確定.因為我們根據(jù)提示的錯誤. 我想出了一個最笨也是最有效的方法. 那就是一個個排查.
AS是在執(zhí)行task ':app:processDebugResources' 這個任務(wù)時,檢查出錯,那么我們就把app module的res文件夾下的每個文件夾進(jìn)行排查.

具體操作如下:
先把所有的res文件夾下的內(nèi)容全部復(fù)制到其他地方,然后把res目錄下的文件夾全部刪除, 然后復(fù)制每復(fù)制一個剛剛放在其他地方的某一個文件夾,粘貼到app module下的res文件夾,然后我們執(zhí)行一次processDebugResources這個命令.

  • 提示: processDebugResources這個命令在側(cè)邊欄的Gradle里面,如下圖所示
    找到other節(jié)點打開.png
需要執(zhí)行的命令.png
  • 每復(fù)制一個文件夾之后,就執(zhí)行一次,直到出現(xiàn)相同的錯誤,就可以確定,你復(fù)制的文件夾內(nèi)部有文件夾是有錯誤的,因此可以通過剛剛我們逐個排查的思路,用同樣的方式排查.

  • 最終,我們找到出錯的結(jié)果是, 因為布局文件中,在同一個布局文件中,有相同的Id 命名, 導(dǎo)致編譯報錯,這種錯誤在AS開發(fā)的話,肯定不會出現(xiàn),因為你一寫,就會報錯, 真的是為寫這個代碼的前輩感到捉急.因此,要學(xué)習(xí)安卓開發(fā),就要選AS,不然 ,eclipse的規(guī)范 ,可能真的不敢恭維.

最后我們總結(jié)一下,遇到AS的IDE出錯,也許會出現(xiàn)很多種情況,一定要留心去觀察, 一定要注意統(tǒng)一性,別以為事小,不放在心上, 后面出現(xiàn)的問題,可能讓你束手無策.

最后感謝大家閱讀,并看完本篇文章.

打一波廣告 ,推薦一波 安卓包沖突,包重復(fù)的解決方案(很有效)的文章.歡迎向我提問大家所遇到的其他編譯問題,
請戳↗↗↗wanandroid交流群 記得附上答案: http://www.wanandroid.com哦。

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

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,351評論 25 708
  • 用兩張圖告訴你,為什么你的 App 會卡頓? - Android - 掘金 Cover 有什么料? 從這篇文章中你...
    hw1212閱讀 14,118評論 2 59
  • feisky云計算、虛擬化與Linux技術(shù)筆記posts - 1014, comments - 298, trac...
    不排版閱讀 4,383評論 0 5
  • 長發(fā)過肩順自然,短發(fā)齊整廓小臉。 卷發(fā)猶帶西洋味,黃發(fā)美女秀可餐。 小巧玲瓏惹人憐,高挑出落十八變。 側(cè)面背影苗條...
    森垚閱讀 359評論 0 1
  • List Dict Dequeue list-like container with fast appends a...
    gzxultra閱讀 433評論 0 0

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