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

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

library的文件

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

另外,apk文件中的resources.arsc文件中的id確實(shí)沒(méi)有l(wèi)ibrary中定義的id
結(jié)論
Android的打包機(jī)制決定了不能有同名的layout文件,故只能避免模塊之間文件的重名
相關(guān)文章
Android開發(fā)筆記之:Splash的實(shí)現(xiàn)詳解
本篇文章是對(duì)Android中Splash的實(shí)現(xiàn)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
Android Activity 與Service進(jìn)行數(shù)據(jù)交互詳解
這篇文章主要介紹了Android Activity 與Service進(jìn)行數(shù)據(jù)交互的相關(guān)資料,在開發(fā)Android App的時(shí)候經(jīng)常會(huì)使用這樣的功能,需要的朋友可以參考下2016-10-10
Android Studio3.2中導(dǎo)出jar包的過(guò)程詳解
這篇文章主要介紹了Android Studio3.2中導(dǎo)出jar包的過(guò)程,本文分步驟給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06
Android利用滑動(dòng)菜單框架實(shí)現(xiàn)滑動(dòng)菜單效果
這篇文章主要介紹了Android實(shí)現(xiàn)滑動(dòng)菜單特效之滑動(dòng)菜單框架完全解析,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05
簡(jiǎn)單介紹Android開發(fā)中的Activity控件的基本概念
這篇文章主要介紹了Android開發(fā)中的Activity控件的基本概念,Activity控件的使用是安卓開發(fā)的基礎(chǔ)之一,需要的朋友可以參考下2015-12-12
Android Jetpack Compose無(wú)限加載列表
大家好,本篇文章主要講的是Android Jetpack Compose無(wú)限加載列表,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下2022-01-01
簡(jiǎn)單介紹Android中Activity的四種啟動(dòng)模式
在Android中每個(gè)界面都是一個(gè)Activity,切換界面操作其實(shí)是多個(gè)不同Activity之間的實(shí)例化操作。本文給大家介紹Android中Activity的四種啟動(dòng)模式,需要的朋友參考下吧2016-04-04

