class文件与dex文件解析

2020-05-15  本文已影响0人  卡路fly

class文件

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

class文件生成

  1. 通过IDE自动build
  2. javac手动生成
    通过java命令执行

class文件作用

记录一个类文件的所有信息

class文件结构

image.png
字段 名称 数据类型 数量 描述
magic 魔数 u4 1 class文件的标志,判断一个文件是不是class格式文件的标准
minor_version 副版本号 u2 1
major_version 主版本号 u2 1
constant_pool_count 常量池大小 u2 1
constant_pool 常量池 cp_info count_pool_count-1
access_flag 访问标志 u2 1
this_class 当前类索引 u2 1
super_class 父类索引 u2 1
interfaces_count 接口索引集合大小 u2 1
interfaces 接口索引集合 u2 interfaces_count
fields_count 字段索引集合大小 u2 1
fields 字段索引集合 field_info field_count
methods_count 方法索引集合大小 u2 1
methods 方法索引集合 method_info method_count
attributes_count 属性索引集合大小 u2 1
attributes 属性索引集合 attribute_info attribute_count

详情:https://kaiwu.lagou.com/course/courseInfo.htm?courseId=67#/detail/pc?id=1857

class文件弊端


dex文件

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

生成方式

  1. 通过IDE自动build
  2. dx命令手动生成
// 生成dex
dx --dex --output Hello.dex Hello.class

// adb push到手机
adb push Hello.dex /storage/emulated/0

// run起来
dalvikvm -cp /sdcard/Hello.dex Hello

作用

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

文件结构


两者异同

上一篇 下一篇

猜你喜欢

热点阅读