.apk在ART中的安装过程。与Dalvik VM安装过程的区别

Yur*_*ets 1 android dalvik apk android-package-managers android-install-apk

最近我回答了这个问题,其中描述了.apk到Android手机的文件的整个安装过程。关于使用的一件事Dalvik VM。现在我想知道安装过程是否与使用过程完全相同ART?有什么区别?我的意思是PackageManager的工作,path格式转换dex等。谷歌搜索没有提供太多信息,仅提供有关性能,管理内存和类似内容的信息。如果有知识的人可以分享此信息,我将非常感激。

Yur*_*ets 6

Android应用采用.apk文件格式,其中Java类转换为DEX字节码。该DEX字节码的格式是独立的装置架构的并且需要被翻译成机器码的设备上运行。对于ARTDalvik运行时来说都是一样的。

从最显著的变化DalvikARTDalvik基于刚刚在时间JIT)编译,而ART基于名列前茅的时间AOT)编译。

使用Dalvik JIT编译器,每次运行该应用程序时,它都会将一部分Dalvik字节码动态转换为机器码。随着执行的进行,更多的字节码将被编译和缓存。另一方面,ART配备了“提前”编译器。在应用程序的安装阶段,它会将DEX字节码静态转换为机器代码,并存储在设备的存储设备中。这是一次事件,在设备上安装了应用程序时会发生。

性能

ART运行时相比,Dalvik运行时最重要的好处是应用程序在上运行得更快ART。由于DEX字节码已在安装过程中转换为机器代码,因此在运行时不需要额外的时间来编译它。ART出于相同原因启动该应用后,其启动速度也更快。

由于Dalvik需要额外的内存用于JIT代码缓存,因此应用在上运行时会占用较小的内存ART

电池寿命

使用Dalvik运行时,将绑定JIT编译CPU。由于进行了AOT编译,因此ART使CPU DEX不必在应用程序执行期间将字节码转换为机器码,从而降低了能耗。使用ART会导致更长的电池寿命,这是需要对电池充电的时间间隔。

安装时间

由于AOT编译器会DEX在应用安装期间将字节码转换为机器代码,因此在运行时将应用安装到设备上需要花费更长的ART时间。考虑到我们在上一节中讨论过的执行速度更快和启动时间更短的好处,因此在应用程序安装期间仅发生一次的额外时间是值得的。

储存空间

ART运行时,AOT编译器将应用程序的DEX字节码转换为机器代码,并将其存储在设备的存储中。预编译的二进制文件比DEX字节码占用更多的空间。因此,与Dalvik运行时相比,导致更大的存储空间。

摘要

至此,我们已经ART为Android 引入了新的运行时。我们还讨论了它的优点和折衷之处,集中在其“提前”编译和性能改进上。当前已发布以供预览,并且仍处于积极的开发和优化中,目前,我们无法就切换到所获得的性能提供定量的结论ART Runtime。可以肯定的是,ART将被替换Dalvikx86基于设备的Android运行时。

来源