Android启动:Dalvik、ART与Zygote解析
1. ART概述
1.1 ART的引入与发展
ART(Android Runtime)最初在Android KitKat(4.4,API 19)中作为实验性运行时环境引入,并在Android Lollipop(5.0,API 21)中取代了Dalvik。它使用与Dalvik相同的中间语言DEX,大多数在ART出现之前编译并能在Dalvik上运行的程序,无需修改即可在ART环境中运行。不过,ART在优化和执行程序的策略上与Dalvik有显著不同。Google提出了提前编译(Ahead-of-Time,AOT)优化的概念,以区别于Dalvik的即时编译(JIT)策略。
1.2 AOT优化策略
“提前编译”意味着将编译为DEX中间语言的应用程序,在安装到设备后的某个时间点,使用名为dex2oat的工具一次性转换为本地代码。这种策略保留了中间语言的核心目标——可移植性。每个Android设备的操作系统中都安装了一个版本的dex2oat,它类似于虚拟机,针对特定的硬件平台。当新应用安装时,dex2oat将应用的中间语言转换为本地二进制文件。应用运行时,执行的是针对其平台的本地代码,无需进一步转换,避免了因重复翻译相同指令而造成的资源浪费。
1.3 判断系统使用的运行时
要确定系统使用的是Dalvik还是ART,可以通过获取系统属性 persist.sys.dalvik.vm.lib.1 的值来判断:
getprop persist.sys.dalvik.
超级会员免费看
订阅专栏 解锁全文
1572

被折叠的 条评论
为什么被折叠?



