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

2021-09-19 10:02:32 字數 891 閱讀 4421

在android專案中引入過多的jar會出現錯誤:

android.dex.dexindexoverflowexception: cannot merge new index ***x into a non-jumbo instruction!

這個錯誤出現的原因是 android設定的方法數是65536個(dex 64k problem),超過這個方法數,導致dex無法生成,就無法生成apk.

限制原因:早期的dalvik vm內部使用short型別變數來標識方法的id,就有了 最大方法數的限制65536。

解決方法:

專案維護時間長了,裡面會出現不再使用的類和不再使用的方法,建議集中清理下,把不再使用的方法,不再使用的類都清除,這樣的好處是**也乾淨了,如果方法數超出的不是太多的話通過清理就可以讓方法數減少到65536以下,一般來說jar裡面的方法數最好,清除一兩個無用的jar包就能大大的減少方法數。

通過在defaultconfig中設定multidexenabled可以開啟分包模式,分包之後的dex就低於了限制數,保證了正常的打包。

defaultconfig
android.dexoptions
設定dexoptions的,不做方法數限制的檢查,這樣做的缺點是apk無法再低版本的裝置上面安裝,會出現錯誤:

install_failed_dexopt

因為我們專案的 minsdkversion為14,所以我採用了第三種的解決方案,不支援低版本的android裝置。

以上的解決方法只是針對gradle的設定

效能優化 65535方法數超出

multidex proguard可以把 code 裡 unnecessary 的 method 移除,壓縮 apk,當然還有 混淆 的奇效。再建立乙個 dex file 3.1 工作流程 multidex的工作流程具體分為兩個部分 3.2 multidex.install context publ...

Android開發 解決方法數越界問題

0.前言 因為單個 dex檔案能夠包含的最大方法總數為 65536,通常apk 包含乙個 dex檔案,因此 android 應用的方法總數不能超過這個數量,這包括 android 框架 第三方類庫和你自己開發的 隨著第三方類庫的加入,方法數就會迅速膨脹。直到遇見下面這個錯誤 com.android....

Android方法數methods超過65536

cannot fit requested classes in a single dex file.try supplying a main dex list.methods 86204 65536 message 原因是android系統定義總方法數是乙個short int,short int 最...