本文记录对Android官方文档对 .dex 文件格式的解释,以帮助反编译apk。
Android apk 中,包含一个.dex文件,Android 6默认包含 .odex 文件,同时向下支持 .dex 格式,Android7具有了新的处理机制,除了核心apk外依然保持.dex文件。
.odex文件其实是.dex文件经过dex2oat后得到的”.oat file” (the AOT binary for the .dex file),Android采用JIT/AOT编译技术,如果.oat文件可用,
可以直接进行“Apk run”,而不要重新从字节码(.dex)编译成特定Android机器的机器码,如果.oat文件不可用,则采用JIT编译器得到prifile cache,AOT daemon根据profile cache重新编译method的字节码得到机器码。
在framework中,我们也能看到.oat文件,也属于the AOT binary file.
关于oat文件格式,参考Android ELF文件格式,以及源码art目录下面的内容。