dex文件的整体结构
逻辑结构
文件结构
struct DexFile{
DexHeader Header;
DexStringId StringId[stringIdsSize];
DexTypeId TypeIds[typeIdsSize];
DexProtoId ProtoIds[protoIdsSize];
DexFieldId FieldIds[fieldIdsSize];
DexMethodId MethodIds[methodIdsSize];
DexClassDef ClassDefs[classDefsSize];
DexData Data[];
DexLink LinkData;
}
jar和dex
dx工具可以将Java字节码转换为Dalvik字节码
odex文件结构
OptimizedDex
Dalvik虚拟机每次都需要从APK文件中读取classes.dex文件这样会耗费很多的cpu时间,采用odex方式优化的dex文件已经包含了加载dex文件必须的依赖库文件列表,Dalvik虚拟机只需要检测并且加载需要的依赖库既可以执行相应的dex文件,这大大缩短了读取dex文件的时间。