dex文件是Anroid的虚拟机Dalik和ART运行的一种文件结构,它包含应用程序的全部操作指令以及运行时数据。
下面从两张图看.class文件和.dex文件区别:
640.png通过上图可以看到,dex文件将原来每个文件都有的共有信息合成一体,从而减少了class的冗余。
640-2.png通过上图可以清晰看到,dex文件主要由3大部分组成,它们分别是:文件头、索引区、数据区。其中索引区主要包括字符串、类型、方法、域、方法的索引。数据区主要包括类的定义、数据区、链路数据区
640-3.pngdex文件头
dex文件头一般固定为0x70个字节大小,它包含标志、版本号、校验码、sha-1签名以及其他一些方法、类的数量和偏移地址等信息。
640.png 640-2.png
结合上面的两张图进行对照,下面我们进一步详细的描述dex文件的结构:
640-3.pngdex索引区
dex文件索引区,它包含一些字符串、类型、方法、域、方法的索引,方法可以查找到对应的数据位置
640-5.png 640-6.pngdex数据区
Dex文件的数据区,它包含类的定义区、数据区、链接数据区。
类的定义区一般存放dex文件中一些类对象的声明,数据区则存放代码原数据,链接数据区一般提供从索引区到数据区的链接映射关系。
网友评论