Android4.4以上的版本就已经可以切换到Art虚拟机模式,Art虚拟机的作用在前面的《Android动态加载oat文件总结一》中已经介绍过,今天主要来讲讲Oat文件的格式,类比Dex文件,Dex是给Dalvik来解释的;而Oat就是给Art来解释的。
这里我主要解析的是Android4.4.2系统的Oat文件格式,Android5.0的Oat格式跟Android4.4.2的有略微的不同,主要在于Oat中某些数据结构中的几个字段,整体上还是不变的(查看源码可以清晰地看到)
首先Oat文件中主要包含两个主要的部分,oatdata和oatexec,
oatdata部分主要描述的是oat的头部信息,image文件的信息描述 , Dex的信息描述 ,Dex原文件的信息 和 指向NativeCode的映射信息:
先来看OatData部分的数据结构:
oat头部信息:
image文件的信息: