Android 与

时间:2024-10-25 14:07:31
Android 与

系统升级到5.1之后,发现system/lib/下面没有了,只剩下了。对于libart模式,从4.4就在Developer optins里面就可以手动选择,到5.1算是转正了。

1,什么是libdvm,libart。
Android KK里引入了ART虚拟机作为Dalvik虚拟机的替代,其主要目的是把Bytecode的翻译优化从运行时提前到安装时, 以空间换时间,从而达到更流畅的用户体验。目前,KK中Dalvik仍是默认的虚拟机,但用户可以在Developer Option中切换到ART虚拟机。坊间传闻在下一版可能会转正。Dalvik和ART的实现分别位于和这两个库。两个可以同时build也可以只build一个,通过Makefile中的变量PRODUCT_RUNTIMES来控制(/devices/tech/dalvik/)。ART本质和Dalvik是一样的,是将Java的Bytecode翻译成Native code。它的主要的实现代码在AOSP的art目录下,另外在libcore/libart/下还有一部分Java层的实现。

2,dex翻译成机器码,在libdvm模式下和Libart模式下是有区别的
framework/native/cmds/installd/
涉及到的命令有dex2oat和dexopt
libdvm是运行时翻译;
libart是在install的时候翻译。

3,这些实现的逻辑在zygote的创建有关。