Android-Daily-Interview icon indicating copy to clipboard operation
Android-Daily-Interview copied to clipboard

2019-09-23:有没有遇到64k问题,应该如何解决?

Open Moosphan opened this issue 4 years ago • 12 comments

Moosphan avatar Sep 23 '19 01:09 Moosphan

分包(⊙o⊙)…

zoushaohua avatar Sep 23 '19 01:09 zoushaohua

手机直接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 avatar Sep 23 '19 01:09 zhaoerlei1989

@zhaoerlei1989 继承MultiDexApplication 就不需要重写 attachBaseContext 了,你可以点进super.attachBaseContext(base); 里看看

103style avatar Sep 23 '19 01:09 103style

@zhaoerlei1989 继承MultiDexApplication 就不需要重写 attachBaseContext 了,你可以点进super.attachBaseContext(base); 里看看

有些第三方的也要求继承他们的Application, 哪里继承的来那么多

zoushaohua avatar Sep 23 '19 01:09 zoushaohua

单个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); }

gabyallen avatar Sep 23 '19 01:09 gabyallen

突破65535 限制 实现三步走 1.导入依赖 ‘com.android.support:multidex:1.0.3’ 2.defaultConfig 增加设置 multiDexEnabled true 3.自定义Application 继承 MultiDexApplication

同步即可! 笔记在此可参考:https://www.jianshu.com/p/ade2e53b8ac2

BuMiangYang avatar Sep 23 '19 06:09 BuMiangYang

继承 MultiDexApplication后不需要install了,他的父类实现这个方法

JianhuaWan avatar Sep 24 '19 03:09 JianhuaWan

分包,多dex优化。

duhang324 avatar Oct 19 '19 06:10 duhang324

1、增加multidel依赖 2、gradle 增加multiDexEnabled true的配置 3、application继承multidexapplication 4、去掉无用的依赖

xiaoyunfei avatar Oct 15 '20 05:10 xiaoyunfei

  1. multidex分包处理(5.0以下需导入兼容库)
  2. 组件化

zlrab avatar Jan 17 '21 08:01 zlrab

现在的gradle都是默认配置multidex了,可以作为了解,新的开发者可能不会碰到这种问题

lix-b avatar Apr 05 '21 07:04 lix-b

使用分包 把classdex分成多个

mlinqirong avatar Jan 10 '22 08:01 mlinqirong