参考:学习视频

1. 背景知识

1.1 Class文件与Dex文件

MultiDex从基础原理到实践优化

  • 根据系统版本的不同,虚拟机分为:Dalvik VM和ART VM。

  • dex文件和dvm或art关系 --> .exe文件和windows系统的关系

  • 5.0及以上开始支持多dex,5.0以下还是单dex

  • java文件 经javac —> .class文件 经dx.jar—> .dex文件
    MultiDex从基础原理到实践优化

左侧的图描述了许多个class文件,一个class文件的作用是记录对应类文件的所有信息,这些信息包含类的常量池字段信息方法信息等。

dex是.class文件的集合,由很多个class文件压缩而来,去除很多class文件的冗余信息,是便于移动设备执行。

总结:dex文件格式是专门为Android上虚拟机设计的一种压缩格式,可以简单理解为dex文件是很多class文件处理后的产物。

1.2 方法数超限问题与解决思路

一个apk安装包包含以下一些文件:
MultiDex从基础原理到实践优化

原生编译流程默认只会生成一个Dex文件

MultiDex从基础原理到实践优化
MultiDex从基础原理到实践优化

这些方法包括:开发人员自己编写代码中的方法以及工程中引用第三方库里面所有的代码方法。

解决思路:MultiDex

Google推出的Dex文件支持库,支持在应用程序中使用多个Dex

2. 基本用法

3. 原理解析

4. 进阶实践

5. 高级优化

6. 课程回顾

相关文章: