Android NoSuchFieldError解決辦法
Android NoSuchFieldError解決辦法
前幾天在開發(fā)的時候,把一個library搬到了一個新的工程中,然后在主應(yīng)用模塊中調(diào)用library的Activity,發(fā)現(xiàn)出現(xiàn)了NoSuchFieldError:

然而,查看代碼明明是沒有問題的,layout文件存在且id正確,R文件也正常。后來在StackOverFlow上找到了答案,原因是主應(yīng)用模塊和library里面的layout文件重名了,把其中一個名字改了就正常運行。后來寫了個小demo重現(xiàn)了錯誤并分析了一下打包的apk:
主模塊和library模塊里新建相同名字的layout文件,但兩者不同,如圖所示
主模塊的文件

library的文件

最后在打包生成的apk文件中,這個名字的layout文件只有一個,并且是主模塊的layout文件:

另外,apk文件中的resources.arsc文件中的id確實沒有l(wèi)ibrary中定義的id
結(jié)論
Android的打包機制決定了不能有同名的layout文件,故只能避免模塊之間文件的重名
相關(guān)文章
Android開發(fā)筆記之:Splash的實現(xiàn)詳解
本篇文章是對Android中Splash的實現(xiàn)進行了詳細的分析介紹,需要的朋友參考下2013-05-05
Android Activity 與Service進行數(shù)據(jù)交互詳解
這篇文章主要介紹了Android Activity 與Service進行數(shù)據(jù)交互的相關(guān)資料,在開發(fā)Android App的時候經(jīng)常會使用這樣的功能,需要的朋友可以參考下2016-10-10
Android Studio3.2中導(dǎo)出jar包的過程詳解
這篇文章主要介紹了Android Studio3.2中導(dǎo)出jar包的過程,本文分步驟給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06
簡單介紹Android開發(fā)中的Activity控件的基本概念
這篇文章主要介紹了Android開發(fā)中的Activity控件的基本概念,Activity控件的使用是安卓開發(fā)的基礎(chǔ)之一,需要的朋友可以參考下2015-12-12

