2019-09-23:有没有遇到64k问题,应该如何解决?
Moosphan opened this issue · 12 comments
分包(⊙o⊙)…
手机直接debug本身没有问题,但是打包的时候会出现Unable to execute dex: method ID not in[0, 0xffff]: 65536)这种问题导致打包失败,这是单个dex文件方法数超过64k导致的,基本上引入过多的依赖都会出现这个问题,解决方法:
1.导入依赖
'com.android.support:multidex:1.0.1'
2.defaultConfig增加这个设置
multiDexEnabled true
3.android下面增加这个设置
dexOptions {
incremental true
javaMaxHeapSize "4g"
}
以上都是在app的buildl.gradle中设置的,编译。
4.打开自定义的Application,继承MultiDexApplication,并重写attachBaseContext方法
@OverRide
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
@zhaoerlei1989 继承MultiDexApplication
就不需要重写 attachBaseContext
了,你可以点进super.attachBaseContext(base);
里看看
@zhaoerlei1989 继承
MultiDexApplication
就不需要重写attachBaseContext
了,你可以点进super.attachBaseContext(base);
里看看
有些第三方的也要求继承他们的Application, 哪里继承的来那么多
单个dex文件方法超过64k,基本上都是引用过多的依赖才导致的。
解决方案:
1.导入依赖
'com.android.support:multidex:1.0.1'
2.defaultConfig增加这个设置
multiDexEnabled true
3.android下面增加这个设置
dexOptions {
incremental true
javaMaxHeapSize "4g"
}
以上都是在app的buildl.gradle中设置的,编译。
4.打开自定义的Application,继承MultiDexApplication,并重写attachBaseContext方法
@OverRide
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
突破65535 限制 实现三步走
1.导入依赖
‘com.android.support:multidex:1.0.3’
2.defaultConfig 增加设置
multiDexEnabled true
3.自定义Application 继承 MultiDexApplication
同步即可!
笔记在此可参考:https://www.jianshu.com/p/ade2e53b8ac2
继承 MultiDexApplication后不需要install了,他的父类实现这个方法
分包,多dex优化。
1、增加multidel依赖
2、gradle 增加multiDexEnabled true的配置
3、application继承multidexapplication
4、去掉无用的依赖
- multidex分包处理(5.0以下需导入兼容库)
- 组件化
现在的gradle都是默认配置multidex了,可以作为了解,新的开发者可能不会碰到这种问题
使用分包 把classdex分成多个