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

时间:2015-05-25 16:33:54

标签: android apk dalvik android-package-managers android-install-apk

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

2 个答案:

答案 0 :(得分:4)

Android应用程序采用.apk文件格式,Java类转换为DEX字节码。 DEX字节码格式独立于设备架构,需要转换为本机机器代码才能在设备上运行。对于ARTDalvik运行时,这都是相同的。

DalvikART的最重要变化是Dalvik基于 即时 ({ {1}})编译,而JIT基于 Ahead of of Time ART)编译。

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

<强> 性能

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

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

电池续航时间

使用ART k运行时,Dalvi编译绑定JIT。由于CPU编译,AOT可以释放CPU在应用程序执行期间将ART字节码转换为机器代码,从而减少能耗。使用DEX会延长电池寿命,这是需要重新充电的时间间隔。

安装时间

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

存储空间

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

<强> 摘要

到目前为止,我们已经为Android引入了新的Dalvik运行时。我们还讨论了它的好处和妥协,集中在其提前编译和性能改进。目前已发布供预览但仍在积极开发和优化中,此时我们无法提供关于切换到ART所获得多少性能的定量结论。有一点可以肯定的是,ART会将ART Runtime替换为基于Dalvik的设备上的Android运行时。

Source

答案 1 :(得分:0)

在dvm架构中,每次应用程序启动时将整个应用程序字节代码转换为dex,然后执行dex文件。因此,当每次发射时都要做同样的事情,所以要克服这个问题,ART就会出现。在ART中,在应用程序安装时只将字节转换为Dex,然后在每次启动时执行相同的dex文件,这里不需要在每次启动时都需要转换。因此,与dvm相比,在ART中启动应用程序所需的时间更少。