Android開發(fā)導(dǎo)入項目報錯Ignoring InnerClasses attribute for an anonymous inner class的解決辦法
在安卓開發(fā)導(dǎo)入項目過程中,出現(xiàn)錯誤再所難免。最近導(dǎo)入項目就遇到如下錯誤,具體如下圖所示。
出現(xiàn)如上錯誤,最初設(shè)想先看下項目能不能運行。經(jīng)嘗試可以完美的在windows系統(tǒng)上運行(雖然會出現(xiàn)如上的錯誤警告)。項目雖然在報警告的情況下,能在windows系統(tǒng)上運行,但一般Android項目都是基于Windows和OS X系統(tǒng)開發(fā)。于是猜想項目能不能同樣在OS X系統(tǒng)上運行呢?結(jié)果發(fā)現(xiàn)不能,必須要把這些錯誤警告解決才行。
最初根據(jù)上圖提示認(rèn)為可能是對應(yīng)的第三方j(luò)ar包的問題。于是,分別替換了對應(yīng)的第三方j(luò)ar包。替換后,發(fā)現(xiàn)還是出現(xiàn)相同的問題。由此jar包問題被排除。經(jīng)查找相應(yīng)的資料說添加如下代碼能解決這個錯誤警告,報著半信半疑的態(tài)度開始試試。
找到項目下對應(yīng)的proguard-rules.pro
文件。如下圖所示。
在proguard-rules.pro文件中添加如下代碼(解釋:忽略內(nèi)部類的一些屬性)。
-keepattributes EnclosingMethod
再次重新構(gòu)建項目,運行發(fā)現(xiàn)然并卵。再次查找相關(guān)資料,資料顯示每個項目的Dex都有方法數(shù)的限制(上限65536,超過上限號稱應(yīng)用爆棚),由此猜想會不會是Dex的方法數(shù)超過上限呢?同樣報著試試的態(tài)度,在項目的build.gradle文件中添加multiDexEnabled true代碼(解釋:設(shè)置多Dex
可用)。
其具體情況如下圖所示
再次重構(gòu)項目,運行,出現(xiàn)如下結(jié)果
由此項目可以在Windows上無錯誤運行,再次將項目導(dǎo)入Mac上,完美運行。Ignoring InnerClasses attribute for an anonymous inner class
問題解決就介紹到此。
下面做下簡單的小結(jié):
(1) 第一考慮是不是可以直接忽略第三方的屬性的錯誤警告,由此層層遞進(jìn)發(fā)現(xiàn)問題。
(2) 出現(xiàn)Ignoring InnerClasses attribute for an anonymous inner class問題一般是第三方j(luò)ar的問題引起的可能性很小,首先考慮是不是Dex越界問題。
(3) 將keepattributes EnclosingMethod去除,再次重構(gòu)發(fā)現(xiàn)也不會出現(xiàn)Ignoring InnerClasses attribute for an anonymous inner class問題,由此進(jìn)一步推斷主要是Dex越界問題引起Ignoring InnerClasses attribute for an anonymous inner class問題。如果導(dǎo)入項目遇到類似問題首先判斷是否是Dex越界引起。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
相關(guān)文章
Android采取BroadcastReceiver方式自動獲取驗證碼
這篇文章主要介紹了Android采取BroadcastReceiver方式自動獲取驗證碼,感興趣的小伙伴們可以參考一下2016-08-08GridView實現(xiàn)桌面圖標(biāo)顯示案例
這篇文章主要為大家詳細(xì)介紹了GridView實現(xiàn)桌面圖標(biāo)顯示案例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-08-08Android實現(xiàn)界面內(nèi)嵌多種卡片視圖(ViewPager、RadioGroup)
這篇文章主要為大家詳細(xì)介紹了Android實現(xiàn)界面內(nèi)嵌多種卡片視圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-09-09