解決Android方法數超出限定的問題

在Android項目中引入過多的jar會出現錯誤:android

android.dex.DexIndexOverflowException: Cannot merge new index xxxx into a non-jumbo instruction!gradle

這個錯誤出現的緣由是 Android設定的方法數是65536(DEX 64K problem),超過這個方法數,致使dex沒法生成,就沒法生成APK.code

限制緣由:早期的Dalvik VM內部使用short類型變量來標識方法的id,就有了 最大方法數的限制65536。io

解決方法:變量

刪除不用的方法,刪除不使用的jar

項目維護時間長了,裏面會出現再也不使用的類和再也不使用的方法,建議集中清理下,把再也不使用的方法,再也不使用的類都清除,這樣的好處是代碼也乾淨了,若是方法數超出的不是太多的話經過清理就能夠讓方法數減小到65536如下,通常來講jar裏面的方法數最好,清除一兩個無用的jar包就能大大的減小方法數。打包

分包

經過在defaultConfig中設置multiDexEnabled能夠開啓分包模式,分包以後的Dex就低於了限制數,保證了正常的打包。方法

defaultConfig {
        multiDexEnabled=true
    }

忽略方法數限制的檢查

android.dexOptions {
    jumboMode = true

}

設置dexOptions的,不作方法數限制的檢查,這樣作的缺點是apk沒法再低版本的設備上面安裝,會出現錯誤:項目

INSTALL_FAILED_DEXOPT時間

由於咱們項目的 minSdkVersion爲14,因此我採用了第三種的解決方案,不支持低版本的Android設備。
以上的解決方法只是針對gradle的設置vi

相關文章
相關標籤/搜索