方法數(shù)64k的限制
The number of method references in a .dex file cannot exceed 64K
exceed 64K
或者
java.util.concurrent.ExecutionException: com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]
這兩種報(bào)錯(cuò)是同一個(gè)問(wèn)題醋安,都是方法數(shù)超限了。
那項(xiàng)目到底有多少個(gè)方法數(shù)呢,可參閱 android 統(tǒng)計(jì)項(xiàng)目方法數(shù)
然而咬扇,知道了項(xiàng)目方法數(shù)并無(wú)濟(jì)于事嫌褪。
方法數(shù)超限怎么解決呢牡直?
- app的
build.gradle
的 defaultConfig 中添加multiDexEnabled
:
android {
//***
defaultConfig {
//***
multiDexEnabled true
//***
}
}
- app的
build.gradle
的 dependencies 中添加multidex
依賴澜术,如下:
dependencies {
compile 'com.android.support:multidex:1.0.3'
//***
}
- application 配置(兩個(gè)配置方式):
a. 使項(xiàng)目AndroidManifest.xml
中配置的 application繼承于android.support.multidex.MultiDexApplication
import android.support.multidex.MultiDexApplication;
public class MyApplication extends MultiDexApplication {
//***
}
b. 若application未繼承MultiDexApplication蔫缸,則覆蓋 attachBaseContext
方法并添加 MultiDex.install(context)
王滤。如下:
import android.app.Application;
import android.content.Context;
import android.support.multidex.MultiDex;
public class MyApplication extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(base);
}
//***
}
至此贺嫂,就可超越64k了
over~