1.OAT文件内容
OAT文件其实就是一个elf格式的文件,结构如下
OAT有两个section,一个是oat data section,里面存放了生成的oat的dex files的内容,还有一个是oat exec section,里面存放的是从dex编译出的native代码。
oatdata section的结构
2.OAT文件的加载
通过dlopen加载到虚拟内存空间的共享库区域,通过dlsym找到“oatdata”和“oatlastword”,oatdata的地址即为OAT文件里面的oatdata段加载到内存中的开始地址,而符号oatlastword的地址即为OAT文件里面的oatexec加载到内存中的结束地址,通过读取oatdata section中的内容创建出OatFile,OatClass,OatMethod等数据结构