dex分包方案概述与multidex包的配置使用

本文探讨了Android应用因方法数超过65536限制导致的分包需求,介绍了Multidex的解决方案。详细讲解了在Gradle中启用Multidex的配置方法,以及分包后的两种情况分析,包括方法数未越界和越界后的dex文件分布。同时,文章提及了使用Multidex可能带来的启动速度降低和兼容性问题。
摘要由CSDN通过智能技术生成

参考资料:
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" );
   	fw.flush();
   	}
   	fw.close();
   }
}

然后复制txt文件里的方法到AS工程里即可。注意,将这些方法分别放在几个类下面,保证每个类不要超过65536。我们所说的65536限制是整个项目的限制。下面,我们分两种方案放置这些方法,运行项目,看看AS会有什么结果。

方案一:我们自己应用的方法数超过了65536
我们所说的方法数限制,这个方法数包括了jar包,框架,还有我们自己应用的代码,当我们应用的代码超过65536时,结果如下:

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值