ART与Dalvik bytecode:兼容性探讨

5次阅读
没有评论

Android应用开发中的ART与Dalvik bytecode关系探讨

在Android系统中,Dalvik虚拟机和随后的Android Runtime (ART) 是两个重要的组成部分。

Dalvik虚拟机及其字节码

最初的Dalvik虚拟机使用Dalvik字节码作为其唯一指令集。Android应用程序打包为APK文件时,其中包含一系列名为DEX( Dalvik Executable)的格式化的Dalvik字节码文件。这些文件在运行时被解释器加载并执行。

Dalvik VM的主要问题是它的性能不佳以及对于大规模应用的支持有限。因此,谷歌引入了ART来改善。

ART与Dalvik bytecode的关系

  1. 保留对DEX的支持
    即使是ART,它依然必须能够支持所有的Dalvik指令集及其格式(即DEX)。这是因为Android系统允许开发者用任何工具创建的任何形式的APK进行安装和运行。因此,ART必须兼容Dalvik虚拟机及其字节码。

  2. Dalvik与ART的并行关系
    在转换过程中,可以将一些原始的Dalvik字节码编译成本机代码(Native code),而剩余部分则继续由虚拟机解释执行。这种混合模型有助于提高应用性能,并保持原有的兼容性。

  3. 安装时DEX到oat文件的转换
    使用dex2oat工具,运行在Android设备上的ART能够在应用安装时或首次执行前将DEX文件转换为可执行格式(oat文件)。此过程会生成针对特定硬件架构优化后的代码版本,并在必要时对所有有效的DEX文件进行编译处理。

  4. Dalvik至ART的兼容性
    尽管ART与早期的Dalvik运行时具有不同的实施方式,但它们都基于相同的指令格式——即上述提到的Dalvik字节码。这意味着开发的应用程序不需要重新编写即可迁移到ART上运行,尽管某些针对旧版本的技术可能在新环境中不再适用。

综上所述,虽然ART采用了不同的执行机制与架构设计,但它依旧保留了对原始Dalvik Executable DEX byte code的支持这一基础属性,使得开发者在向新版系统迁移时可以顺利进行,并且应用能够以接近原生的性能水平运行。

正文完