前言
最近也遇到了mutildex的问题,原因是一个dex.class不能超过65536,根据官网的指示Building Apps with Over 65K Methods
解决了,记录一下步骤
step1
添加依赖 compile 'com.android.support:multidex:1.0.0'
step2
配置app的build.gradle,新增multiDexEnabled true如下:
1 | defaultConfig { |
step3
让App继承MultiDexApplication
step4
重写App的attachBaseContext方法
如下:1
2
3
4
5
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
获取当前项目的方法数
现在有个gradle插件可以检测当前项目所占的总方法数–>dexcount,使用很简单.
step1 配置app/build.gradle
1 | buildscript { |
step2 build项目即可
编译项目,如./gradlew assembleDebug
就可以得知结果了:1
2
3
4
5
6
7:app:assembleInternalDebug
Total methods in app-Internal-debug.apk: 58359
Total fields in app-Internal-debug.apk: 31843
Methods remaining in app-Internal-debug.apk: 7176
Fields remaining in app-Internal-debug.apk: 33692
BUILD SUCCESSFUL
后续
后来另外一个项目也到了需要使用mutildex的情况,然而当我配置完后,发现出现了另外的问题,java.lang.OutOfMemoryError: GC overhead limit exceeded,仔细检查,发现并没有配置错误,于是内心是崩溃的…
搜索之后,发现这里有个讨论—>stackoverflow,最后添加了个配置到app/build.gradle文件即可
1 | dexOptions { |
呵呵,又学了一招!~~
More
- 艺术探索中也有提到,可以看看
- Android 使用android-support-multidex解决Dex超出方法数的限制问题,让你的应用不再爆棚