您好,登錄后才能下訂單哦!
Android NoSuchFieldError解決辦法
前幾天在開發的時候,把一個library搬到了一個新的工程中,然后在主應用模塊中調用library的Activity,發現出現了NoSuchFieldError:
然而,查看代碼明明是沒有問題的,layout文件存在且id正確,R文件也正常。后來在StackOverFlow上找到了答案,原因是主應用模塊和library里面的layout文件重名了,把其中一個名字改了就正常運行。后來寫了個小demo重現了錯誤并分析了一下打包的apk:
主模塊和library模塊里新建相同名字的layout文件,但兩者不同,如圖所示
主模塊的文件
library的文件
最后在打包生成的apk文件中,這個名字的layout文件只有一個,并且是主模塊的layout文件:
另外,apk文件中的resources.arsc文件中的id確實沒有library中定義的id
結論
Android的打包機制決定了不能有同名的layout文件,故只能避免模塊之間文件的重名
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。