Android--"65535"方法數(shù)超標

Android--app啟用MutiDex(是Google的一個補?。?br> 主要解決“65535”方法數(shù)超標以及"INSTALL_FAILED_DEXOPT"問題。


在構(gòu)建apk的時候限制了一個dex文件能包含的方法數(shù)其總數(shù)不能超過65535(64K,1K=2^10=1024,64*1024=65535)


一般一個APP只有一個classes.dex文件,所以方法數(shù)最多是65535,而使用了MutiDex后會實現(xiàn)一個apk多個dex文件,解壓apk會發(fā)現(xiàn)有classes.dex、classes2.dex、classes(n).dex,這樣就突破了65535方法數(shù)量限制


使用方法
1.首先在App的build.gradle中添加multiDexEnabled true和相應(yīng)依賴

android {
    ......
    defaultConfig {
        ......
        //dex 突破65535的限制 multiDexEnabled 多dex支持
        multiDexEnabled true
    }
}
dependencies {
    ......
    implementation 'com.android.support:multidex:1.0.0'
}

2.兩種方式
方式一:在清單文件里添加

 <application
...
android:name="android.support.multidex.MultiDexApplication">
...
</application>

但是我們經(jīng)常會使用自定義的application文件,所以這種方式使用的場景不多。當然我們可以自定義application繼承于MultiDexApplication也可以實現(xiàn)。這樣就引申出了第二種方式。


方式二:有兩種實現(xiàn)方式,原理一樣。

實現(xiàn)一:我們自定義application直接繼承MultiDexApplication,在清單文件使用自定義application

實現(xiàn)二:我們看一下MultiDexApplication這個類具體實現(xiàn)了什么

public class MultiDexApplication extends Application {
    public MultiDexApplication() {
    }

    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
    }
}

所以我們可以照著在自定義application中實現(xiàn)attachBaseContext()方法并加上MultiDex.install(this);


注意:目前 Android 5.0 以上的設(shè)備已經(jīng)自身支持了 MultiDex 功能,也就是說在安裝 apk 的時候,系統(tǒng)已經(jīng)會幫我們把 apk 里面的所有 dex 文件都做好 Optimize 處理,所以不需要我們在代碼里啟用 MultiDex 了。但是對于 Android 5.0 以下的設(shè)置,則依然要求我們啟用 MultiDex。

ok了,但是看了好多文章,說MultiDex有很多坑。。。。。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容