zoukankan      html  css  js  c++  java
  • Android ART、Dalvik在multidex上的差异、关联

       为提升应用运行性能,谷歌官方从5.0(api level:21)版本开始,将虚拟机运行环境默认为ART, 此处主要研究ART、Dalvik在multidex处理上的差异和关联,做了一个简单的手绘,如下: 

      multidex由分包、合包两个过程组成,分包均是通过andriod build tool来做的,两者存在一个很重要的差异点:

      android 5.0及以上手机在安装apk时,手机设备中的dex2oat工具会将dex1~dexN读取合成为一个oat文件, 供art使用。dex2oat的过程是不区分主dex、辅助dex的,这样在编译时就可以节省dex merging这个操作(用来计算主dex放哪些类),dex的增量编译效率得以提高。而android 5.0以下版本的手机上,dalvik的输入文件为dex,需通过主dex使用multidex support包加载辅助dex的方式来合包。

      因此,5.0及以上版本,multidex support的install操作是需要阻断的,它的兼容逻辑在MultiDex.install可以看到:

      即,系统配置属性java.vm.version大于"2.0.0"表明虚拟机运行环境为ART。

    Ref:

      https://developer.android.com/studio/build/multidex.html#about

      https://developer.android.com/guide/practices/verifying-apps-art.html

           

      

  • 相关阅读:
    python的特点
    epoll理解(转)
    数据库存储过程、触发器、连接
    Mysql的四种隔离级别
    linux指令
    利用asyncio(支持异步io)和协程实现单线程同步
    ubuntu安装codeblocks
    临界区与互斥量区别
    单链表的简单操作
    hdu 5475 An easy problem(暴力 || 线段树区间单点更新)
  • 原文地址:https://www.cnblogs.com/tonybright/p/8907220.html
Copyright © 2011-2022 走看看