基本知识
JVM
JAVA虚拟机 .java文件 -> .class文件 -> .jar文件
DVM
4.4以前的Android虚拟机 Dalvik Virtual Machine .java文件 –>.class文件-> .dex文件
ART
5.0以后的Android虚拟机 Android Runtime Android运行时ART,它的核心是OAT文件
区别:
DVM,应用每次运行时,字节码都需要通过即时编译器(JIT,just in time)转换为机器码,这会使得应用的运行效率降低。
ART,系统在安装应用时会进行一次预编译(AOT,ahead of time),将字节码预先编译成机器码并存储在本地,这样应用每次运行时就不需要执行编译了,运行效率也大大提升。
这里涉及到ART的安装速度会变慢
ART安装速度的流程 关键字dex2oat
Android虚拟机学习整理在应用安装时,installd通过dex2oat优化APK安装包classes.dex的Dalvik字节码为本地机器代码
参考学习
https://blog.csdn.net/weixin_42336002/article/details/80610555
https://www.cnblogs.com/qitian1/p/6461541.html
https://chriszeng87.iteye.com/blog/2113621
补充知识点
dex
Dalvik VM executes的全称,可以认为是安卓虚拟机的可执行程序。
dexopt
dexopt 是 android dalvik 虚拟机使用的优化程序,它负责把dex文件优化成odex。
dexopt在dalvik虚拟机上的目的是,将dex文件优化成odex文件,可以让虚拟机更加优化的执行。
dexopt在ART虚拟机上的目的是,将dex文件优化成二进制格式的文件,从可以让ART虚拟机执行。dexopt会调用dex2oat进行
odex
odex是OptimizedDEX的缩写,表示对dex的优化
odex vdex art
https://blog.csdn.net/u010164190/article/details/84989488
dex2oat
dex2oat的任务是将原来的dex文件做预先的翻译,从而可以加快APP运行的时间。但是由于某些APP比较复杂,所以优化的时间就比较长
dex2oat 顾名思义 dex file to oat file,就是在新旧两种运行时文件的转换。
oat
OAT文件是一种Android私有ELF文件格式,它不仅包含有从DEX文件翻译而来的本地机器指令,还包含有原来的DEX文件内容
参考学习:
https://blog.csdn.net/alvinhuai/article/details/81738400
https://blog.csdn.net/ShenFengMeng/article/details/50598680
https://www.jianshu.com/p/cfeb8dec53c3
https://blog.csdn.net/long375577908/article/details/78190422
http://blog.jobbole.com/77761/
网友评论