众所周知当Android app代码足够多时, 编译会报方法数超过65535问题。 Google为了解决这个问题,提供了multi-dex方案, 即将代码编译成若干个dex文件,如classes.dex, classes2.dex...classes*.dex。
我们关心的是怎么解决这个问题,包括插件化、multi-dex等等方案, 网上相关的博客非常多。
但是有人想过Android为什么要报这个问题, 在哪里报的?
dalvik或art虚拟机在加载*.dex文件时会生成一个DexFile实例, 该实例包含dex文件的各种属性。
DexFile结构体的第一个属性pOptHeader指针的数据类型是DexHeader, 看看DexHeader的定义: