介绍dex、vdex、.odex与.oat文件
作为本际云服务器推荐网的小编小本本,今天我们来介绍一下dex、vdex、.odex与.oat文件。

关于dex文件
在我们写Java代码的时候,生成的文件是.java文件。对于PC上的java虚拟机(JVM)运行的是是.class。.java文件转成.class文件,需要jdk工具。在Android端,Android上的Davlik虚拟机是运行.dex。所以还得将.class转成dex文件,即dex文件就是AndroidDalvik虚拟机运行的程序。
关于vdex、.odex与.oat文件
在讲odex之前,需要先讲vdex(AndroidO开始加入的)包直接转化的可执行二进制码文件。odex是优化版的dex。在AndroidN之前,Dalvik虚拟机执行程序dex文件前,系统会对dex文件做优化,生成可执行文件odex,保存到data/dalvik-cache目录,最后把apk文件中的dex文件删除。在AndroidO之后,odex是从vdex这个文件中提取了部分模块生成的一个新的可执行二进制码文件,odex从vdex中提取后,vdex的大小就减少了。ART虚拟机使用的是oat文件,OAT文件是一种Android私有ELF文件格式,它不仅包含有从DEX文件翻译而来的本地机器指令,还包含有原来的DEX文件内容。
在使用这些文件时需要注意,例如首次安装时进行dex2oat时会校验Dex文件各个section的合法性,这时候使用的compilerfilter为了照顾安装速度等方面,并没有采用全量编译,当app启动后,运行一段时间后,收集了足够多的jit热点方法信息,Android会在后台重新进行dex2oat,将热点方法编译成机器代码,这时候就不用再重复做验证Dex文件的过程了。
原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/7428.html
