Android 各版本的安装速度
5.0之前,Android使用的是Dalvik虚拟机,代码执行时使用JIT编译(Just in Time),即在运行时实时将字节码编译成操作系统可执行的机器码,因此表现为运行时慢。由于没有提前编译,安装时没有额外的操作,安装速度很快。
5.0开始,Android使用ART虚拟器代替了Dalvik,为了优化运行时速度,ART使用了AOT的编译方式(Ahead of Time),在安装时对安装包的字节码进行编译,生成操作系统可执行的机器码,因此运行时无需等待编译,可以直接执行,运行速度大大提升。同时带来的弊病是安装慢,由于需要额外生成机器码,安装后占用的存储空间也更大,有数据统计,ART上安装的应用比Dalvik占用的存储大了10%。
7.0后,为了解决ART虚拟机apk安装慢的问题,Google又做了一些策略优化。在安装时不会编译全量的apk,仅编译必要的部分,剩余的部分在设备闲时进行编译,如果运行时发现代码没有被编译,再实时编译,这样就同时优化了安装速度,也使得运行时运行很快。7.0上使用策略实际是JIT和AOT的混合模式。