笔记:综合技术

综合技术


  • 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的程序会报错。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,130评论 25 709
  • 一、背景 随着业务规模发展,不断的加入新的功能,添加新的类库,app的方法数已经超过65535,这样的情况下就会遇...
    jiantao阅读 18,582评论 6 50
  • 第十章:Android的消息机制 Handler是Android消息机制的上层接口,开发人员只需要与它交互即可,底...
    loneyzhou阅读 748评论 0 1
  • 这七年,你说你懂我,我不懂你。 可是我突然间想到,那是因为你从都没有让我走进你真实的内心。 或许,说到这你又要反驳...
    暖七年阅读 269评论 0 0
  • 先列个目录,省的写着写着跑偏了 1骨盆前倾 2不同腿形 3矫正动作 1骨盆前倾 腿不好看的根本原因在于骨盆啊。骨盆...
    运动闺蜜万小歪阅读 5,181评论 10 250