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有很多坑。。。。。
