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

参考资料:
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时,结果如下:

  • 15
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值