笔记:综合技术

综合技术


  • android 65535方法数限制原因

Android app中所有代码都放在dex文件中,dex中存放了全部java编译后的字节码文件

当Android系统启动一个应用的时候,有一步对dex进行优化,通过DexOpt处理工具专门来对dex进行优化,DexOpt执行是在第一次加载Dex的时候执行,这个过程会生产一个ODEX文件,即Optimised。

DexOpt会把每个方法存储起来(dexopt采用一个固定大小的缓冲区来存储应用中所有方法信息,这个缓冲区就是LinearAlloc,缓冲区在新版本中的大小是8M或16M,在2.2,2.3中只有5M,如果存储的方法信息大于5M,dexopt就会报错),存在一个链表结构里,但这个链表长度是用short类型来保存的。

short类型二进制位16位,范围:-215~215-1 也就是-32768~32767 一共65535个数

官方的解决方案,导入multidex包:http://blog.csdn.net/czhpxl007/article/details/50419974

在Android5.0之前,需要使用官方提供的android-support-multidex.jar包,5.0之后,Android应用默认支持multidex.

multidex的优缺点
  1. 会降低应用的启动速度
  2. 由于MultiDex的bug,极少数4.0以上的手机运行multidex的程序会报错。

你可能感兴趣的:(笔记:综合技术)