美文网首页
笔记:综合技术

笔记:综合技术

作者: jiaming_ | 来源:发表于2017-10-23 09:43 被阅读3次

    综合技术


    • 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的程序会报错。

    相关文章

      网友评论

          本文标题:笔记:综合技术

          本文链接:https://www.haomeiwen.com/subject/niuouxtx.html