1. 程式人生 > >Android疑難雜症大彙總

Android疑難雜症大彙總

此文專門記載本人在開發過程中遇到的一些印象比較深刻的問題,以及踩過的一些坑,包括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

(apk包名),將資料完全從手機上解除安裝乾淨,再次執行即可。

執行專案時報錯The apk file xxxx.apk dose not exist in disk Error while Installing APK

原因

在工程目錄中找不到該名字的apk檔案

解決方法

點選AndroidStudio的側邊欄的gradle展開專案的gradle列表,然後點選重新整理按鈕,重新整理完成之後,即可

填坑之路未完待續.......