我正在尝试分析oat格式以了解android应用程序加载器的工作原理。 我认为Android应用程序在Android运行时(ART)中都被编译为本机代码作为oat文件。
然而,我发现oat文件中有原始的dex文件,燕麦类头中也有非编译方法。
此外,oat类头中有一个类型字段告诉 编译了多少部分方法。 此类型字段的存在意味着可以存在未编译的方法 在燕麦文件中。
这是描述类型字段的图 这是Paul Sabanal在2014年黑帽会议上透露的。
The type field of oat class header
以下是我的oatdump在Android 6.0中显示oat文件的内容
Non-compiled method in oat file
您可以看到未编译的方法没有任何本机方法偏移字段。
我找不到任何关于燕麦文件的官方文件。
总结一下,问题是
提前感谢您的回答。