Dalvik/ART虚拟机是什么,跟安卓运行APK有啥关系,举个常用例子

发布时间 2023-11-09 13:21:55作者: 新壳软件

Dalvik和ART(Android Runtime)都是安卓操作系统中的应用程序虚拟机,它们是Android设备上运行APK文件的关键组成部分。

Dalvik虚拟机

  • 概念:Dalvik是Android最初使用的虚拟机,它专为Android系统设计,主要用于执行APK中的Dalvik Executable(.dex)文件。
  • 工作原理:Dalvik通过使用即时编译(JIT)将应用程序的字节码转换为适合手机CPU执行的机器码。即时编译意味着代码在运行时编译,而不是在安装时。
  • 性能:虽然Dalvik在当时是一个高效的虚拟机,但由于其JIT编译方式,它可能在运行应用时引入延迟,因为编译发生在应用执行的同时。

ART虚拟机

  • 概念:ART是在Android 4.4(KitKat)中引入作为Dalvik的替代品,并从Android 5.0(Lollipop)开始成为默认的运行时环境。
  • 工作原理:ART使用预先编译(AOT,Ahead-Of-Time)技术,这意味着应用程序的代码在安装时就被编译成机器码,这样在运行时就不需要再编译了。
  • 性能:由于预编译的特点,ART能够提供更好的应用性能,减少应用启动时间,并且改善了内存管理和垃圾收集机制。

APK与Dalvik/ART的关系

APK(Android Package)文件是Android应用程序的打包格式,包含了应用程序的所有组成部分,包括代码、资源、资产、证书等。当你在Android设备上安装一个APK时,Dalvik或ART虚拟机会负责运行里面包含的.dex文件,也就是编译后的Java代码。

常用例子

假设你下载了一个游戏的APK文件并安装到你的Android手机上:

  1. 安装:当你点击安装,APK文件被解压,应用程序的.dex文件被提取出来。
  2. 编译
  • 在Dalvik上,这些.dex文件会在你每次运行应用程序时被即时编译成机器码。
  • 在ART上,.dex文件在安装过程中就被预编译成机器码。
  1. 执行:当你启动游戏,ART或Dalvik虚拟机会执行这些已编译的机器码,游戏就在你的设备上运行起来。

随着Android的发展,Dalvik已经被ART取代,但它们都在Android应用程序的执行过程中扮演了至关重要的角色。

 作者:http://xkrj5.com 纯原创首发,转载保留版权!