Class文件和Dex文件的初步解析

来源:互联网 发布:qq强制聊天js脚本代码 编辑:程序博客网 时间:2024/05/16 17:26

class文件结构
特点:
(1)8字节的二进制流文件
(2)各个数据按栓需紧密的排列,无间隙
(3)每个类或接口都单独占据一个class文件

class文件中的字段,及作用
(1)magic:无符号4字节,加密段,判断是否被篡改过
(2)minor_version:最小适配的jdk版本
(3)major_version:由哪个jdk版本生成
(4)constant_pool_count:常量池的数量
(5)constant_pool:结构体类型,常量池
(6)access_flags:当前class文件作用域标志
(7)this_class:当前类
(8)super_class:父类
(9)interface_count:当前类文件继承的接口数量,直接继承
(10)interface:当前类文件直接继承的接口
(11)fileds_count:所有的成员变量的数量
(12)fields:结构体,所有的成本变量
(13)methods_count:方法数量
(14)methods:结构体,当前类的method

access flags 取值范围

这里写图片描述

constant_pool

constant_Integer_info
constant_Long_info
constant_String_info

constant_Class_info:当前类信息,以及引用类信息
constant_Fieldref_info:索引-成员变量信息
constant_Methodref_info:索引-方法信息

用“010Editor”可查看class文件
这里写图片描述

class文件弊端:内存占用大,加载速度慢

Dex文件
能够被DVM识别,加载并执行的文件格式

dex文件作用
记录整个工程中所有类文件的信息

dex文件结构
(1)一种8字节的二进制流文件
(2)各个数据按顺序紧密的排列,无间隙
(3)整个应用中所有java源文件都放在一个dex中

这里写图片描述

dex文件头
这里写图片描述

这里写图片描述

dex文件中的索引区,同样使用“010editor”查看
这里写图片描述

dex中的数据区

这里写图片描述

原创粉丝点击