1、背景介绍
前面我们了解过dex文件的文件格式,数据类型等知识,这里我们来简单分析一下,dex文件在内存中的映射关系。
DexFile的结构体源码如下:
struct DexFile {
/* directly-mapped "opt" header */
const DexOptHeader* pOptHeader;
/* pointers to directly-mapped structs and arrays in base DEX */
// 映射Dex整体文件
const DexHeader* pHeader;
const DexStringId* pStringIds;
const DexTypeId* pTypeIds;
const DexFieldId* pFieldIds;
const DexMethodId* pMethodIds;
const DexProtoId* pProtoIds;
const DexClassDef* pClassDefs;
const DexLink* pLinkData;
// 一些附加的节段信息
const DexClassLookup* pClassLookup;
const void* pRegisterMapPool; // RegisterMapClassPool
/* points to start of DEX file data */
// 指向Dex文件开始
const u1* baseAddr;
/* track memory overhead for auxillary structures */
// 附属的内存数据
int overhead;
/* addition