Android 65K问题之Multidex原理分析及NoClassDefFoundError的解决方法
来源:互联网 发布:知乎怎么添加关注话题 编辑:程序博客网 时间:2024/06/05 17:54
compile 'com.android.support:multidex:1.0.1'
release {
minifyEnabled false
//分包
multiDexEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
javaMaxHeapSize "4g"
incremental true
}
...
}
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(base);
}
1
collect{variant}MultiDexComponents task
这个task会读取项目的AndroidManifest.xml文件中注册的application、Activity、service、receiver、provider、instrumentation相关类,并将其class文件路径写到文件buidl/intermediates/multi-dex/${variant.dirName}/manifest_keep.txt
中
1
shrink{variant}MultiDexComponents task
这个task会调用ProGuard并根据上一步生成的manifest_keep.txt文件内容去压缩class,剔除没有用到的class,生成一个精简的jar包buidl/intermediates/multi-dex/${variant.dirName}/componentClasses.jar
1
create{variant}MainDexClassList task
这个task会根据上一步生成的componentClasses.jar去寻找这里面的各个class文字中依赖的class,比如一个class中有一成员变量X,那么X就是依赖的class,componentClasses.jar中所有的class和依赖的class路径都会被写入到文件buidl/intermediates/multi-dex/${variant.dirName}/maindexlist.txt
中,这个文件中的类都会被编译进主的classes.dex中去。(详情可以查看ClassReferenceListBuilder的实现源码)
NoClassDefFoundError
Multidex固然是好的,不用再为方法数超过65536而苦恼了。但是有时往往会带来意想不到的bug,比如NoClassDefFoundError。之前我就在项目中遇到了这个问题,一启动程序就crash了,看log是由于某个类找不到引起的。
create{variant}MainDexClassList
这个task完成之后再去修改maindexlist.txt文件添加丢失的class。 - Android 65K问题之Multidex原理分析及NoClassDefFoundError的解决方法
- Android 65K问题之Multidex原理分析及NoClassDefFoundError的解决方法
- 解决Android应用方法数不能超过65K问题-使用multidex来解决方法数越界
- Android Studio Multidex 解决方法数超65k限制
- Android Studio Multidex 解决方法数超65k限制
- Android Support Multidex原理分析
- Android Multidex原理及实现
- android MultiDex multidex原理下超出方法数的限制问题(三)
- MultiDex解决64K限制的问题
- 关于Android MultiDex的问题
- Android Multidex 遇到的问题
- Android Studio使用MultiDex后遇到的NoClassDefFoundError;
- 关于Android APP在线热修复bug方案的调研(二)(MultiDex的原理分析---Nuwa)
- Android的multidex使用及优化
- android MultiDex multiDex原理(一)
- 使用 multidex 解决应用方法数不能超过65k的问题
- Android使用multidex解决方法数越界问题65536
- Android Multidex解决类过多的问题
- Android官方开发文档Training系列课程中文版:与其它APP交互之从Activity获得结果
- 用ModelSim、Mars和Verilog做计算机组成原理CPU实验注意事项
- 思维--nkoj3653七的倍数
- AndroidStudio基本的快捷键整理
- HDU 1753 大明A+B(大小数加法,C模拟,Java BigDecimal)
- Android 65K问题之Multidex原理分析及NoClassDefFoundError的解决方法
- bfs
- 6_Linux系统中的进程创建分析
- 第五周项目三-时间类(1)
- 【VIP】【图】332. Reconstruct Itinerary【M】【47】
- 良好使用UIView,使自定义的视图低耦合、高内聚
- hdoj 2407 Knots
- Spring-理解AOP
- 图示经典算法--快速排序