[Android(安卓)Pro] Android(安卓)libdvm.so 与 libart.so
16lz
2021-01-26
reference to ;http://blog.csdn.net/koffuxu/article/details/44780351
Android libdvm.so 与 libart.so
系统升级到5.1之后,发现system/lib/下面没有libdvm.so了,只剩下了libart.so。对于libart模式,从4.4就在Developer optins里面就可以手动选择,到5.1算是转正了。 1,什么是libdvm,libart。 Android KK里引入了ART虚拟机作为Dalvik虚拟机的替代,其主要目的是把Bytecode的翻译优化从运行时提前到安装时,以空间换时间,从而达到更流畅的用户体验。目前,KK中Dalvik仍是默认的虚拟机,但用户可以在Developer Option中切换到ART虚拟机。坊间传闻在下一版可能会转正。Dalvik和ART的实现分别位于libdvm.so和libart.so这两个库。两个可以同时build也可以只build一个,通过Makefile中的变量PRODUCT_RUNTIMES来控制(https://source.android.com/devices/tech/dalvik/art.html)。ART本质和Dalvik是一样的,是将Java的Bytecode翻译成Native code。它的主要的实现代码在AOSP的art目录下,另外在libcore/libart/下还有一部分Java层的实现。 2,dex翻译成机器码,在libdvm模式下和Libart模式下是有区别的 framework/native/cmds/installd/commands.c 涉及到的命令有dex2oat和dexopt libdvm是运行时翻译; libart是在install的时候翻译。 3,这些实现的逻辑在zygote的创建有关。 分类: Android Pro 本文转自demoblog博客园博客,原文链接http://www.cnblogs.com/0616--ataozhijia/p/5678458.html如需转载请自行联系原作者demoblog
更多相关文章
- 安卓学习第一天
- Android(安卓)中文 SDK (48) ―― Filter.FilterListener
- 在VMware虚拟机下安装Android(安卓)Studio(AS)以及运行第一个Hello
- StevGuo系列文章翻译之Android中的输入事件如何分发
- 【android】与pc机进行UDP通信(二)
- android 五大应用开发框架是什么
- Android中文API(117)――WrapperListAdapter
- Qt on Android(安卓)Episode 2(翻译)
- android 在UI线程之外处理Bitmap - 开发文档翻译