Android疑難雜症大彙總
阿新 • • 發佈:2018-12-17
此文專門記載本人在開發過程中遇到的一些印象比較深刻的問題,以及踩過的一些坑,包括Gradle以及AndroidStudio都有,會一直持續更新~
目錄
- Android5.0以下(Android4.x)出現NoClassDefFoundError
- 執行專案時報錯Error: Activity class {} does not exist.Error while Launching activity
- 執行專案時報錯The apk file xxxx.apk dose not exist in disk Error while Installing APK
Android5.0以下(Android4.x)出現NoClassDefFoundError
原因
我們平時的專案經過編譯打包,其中的Java程式碼(包括Library)轉化為DEX格式的位元組碼檔案,這是Android 5.0之前的Dalvik虛擬機器決定的(5.0之後改為ART虛擬機器),並且採用short型別引用DEX檔案中的method,而short型別能夠表示的最大值是65536,也就說單個DEX檔案中最多隻有65536個method能夠得到引用,所以一旦方法數超過65536個,即會爆出這個Error
解決方法
首先在app的build.gradle中開啟multidex:
接著假如你的Application的自定義的話,就直接繼承於MultidexApplication或者重寫Application的attachBaseContext()方法,並呼叫Multidex.install(this):
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
執行專案時報錯Error: Activity class {} does not exist.Error while Launching activity
原因
AndroidStudio找不到該Activity的類,可能是未註冊Activity或者編譯器的bug
解決方法
首先按照字面意思排查是否有該Activity以及是否在AndroidMainfest.xml中已註冊,假如確認已經註冊,可以嘗試命令列執行:adb uninstall com.xxx.xxx
執行專案時報錯The apk file xxxx.apk dose not exist in disk Error while Installing APK
原因
在工程目錄中找不到該名字的apk檔案
解決方法
點選AndroidStudio的側邊欄的gradle展開專案的gradle列表,然後點選重新整理按鈕,重新整理完成之後,即可
填坑之路未完待續.......