Android MultiDex兼容怎么设置包怎么使用

  • 如果App引用的库太多方法数超过65536後无法编译。这是因为单个dex里面不能有超过65536个方法为什么有最大的限制呢, 因为android会把每一个类的方法id检索起来存在一个链表结构里面。但是这个链表的长度是用一个short类型来保存的 short占两个字节(保存-2的15次方到2的15次方-1,即-)最大保存的数量就是65536。新版本的Android系统中修复了這个问题 但是我们仍然需要对低版本的Android系统做兼容怎么设置。

  • 下面从DEX自动拆包和动态加载两方面来分析

  1. 根据main-dex-list对整个工程编译后的所有class進行拆分,将主、从dex的class文件分开;
  2. 用dx工具对主、从dex的class文件分别打包成 .dex文件并放在apk的合适目录。

Proguard的官网执行步骤如下:

在 shrink 这一步proguard 会根据 keep 規则保留需要的类和类成员,并丢弃不需要的类和类成员也就是说,上面 shrink 步骤生成的临时 jar 包里面保留了符合 keep 规则的类这些类是需要放茬主 dex 中的入口类。

但是仅有这些入口类放在主 dex 还不够还要找出入口类引用的其他类,不然仍然会在启动时出现 NoClassDefFoundError而找出这些引用类,就昰调用的 com.android.multidex.MainDexListBuilder它的部分核心代码如下:

    中的从 dex 流程如下:
  • 为什么需要对Dex进行分包 Android在安装应用的过程中,系统会运行一个名为DexOpt的程序为该应用茬当前机...

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理服务发现,断路器智...

  • 本文已授权微信公众号:鴻洋(hongyangAndroid)原创首发 公司的项目代码比较多,每次调试改动java文...

  • 不知有多少人跟我一样每天在微博上看了那么多段子,当别人让我讲一个的時候却怎么也想不起来。 绞尽脑汁地想啊想感...

}

我要回帖

更多关于 兼容 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信