参考资料:
Android dex分包方案
Android分包MultiDex原理
《Android开发艺术探索》
博客中间会涉及到dex文件的反编译,参考博文:
dex文件的反编译-dex2jar和jd-gui
1.dex分包的原因
对于功能越来越复杂的app的两大问题
-
问题一:当项目越来越大,方法数超过65536,编译时会出错(为什么是65536,参考下面关于dexopt对方法id检索存储介绍),这个所说的方法数包含用到的框架,依赖的jar包,当然还有我们应用本身的代码中的所有方法。
我们可以写个Demo看看报的具体错误。 那我们写个65536以上个方法,可以用java的IO流向一个txt里写入65537个方法。
public class MethodWriter {
public static void main(String[] args) throws IOException{
FileWriter fw = new FileWriter("demo.txt");
for(int i = 1 ; i <= 65537; i++){
fw.write( "public void me" + i + "(){ }\r\n"