Dalvik虚拟机与ART虚拟机

作者: Guoozx | 来源:发表于2018-12-01 15:20 被阅读0次

    一.储备阅读:

    1.Android 打包过程

    打包流程图:

    Android打包流程.png

    2.Android AAPT详解

    AAPT - Android Asset Packaging Tool---Android资源打包工具

    • AAPT部分命令整理:

      • aapt l[ist] [-v] [-a] file.{zip,jar,apk} 作用:列出压缩文件(zip,jar,apk)中的目录内容。
      • .aapt d[ump] [--values] [--include-meta-data] WHAT file.{apk} [asset [asset ...]]
        作用:通过参数配置可以dump apk中各种详细信息。
      • aapt p[ackage] [-d][-f][-m][-u][-v][-x][-z][-M AndroidManifest.xml] 作用:android 编译资源打包资源文件的命令。
    • 源码分析:

    ①.入口 /frameworks/base/tools/aapt/Main.cpp
    ②.分发指令 /frameworks/base/tools/aapt/Main.cpp
    ③.处理package指令 /frameworks/base/tools/aapt/Command.cpp
        这个过程主要是对资源配置信息进行校验,Android应用程序资源的组织方式有18个维度,包括mcc(移动国家代码)、mnc(移动网络代码)、local(语言区域)等。
        该代码的主要实现是在 /framewors/base/tools/aapt/AaptConfig.cpp 里的parse方法。解析完成的数据,会丢给WeakResourceFilter类中的一个向量集合成员mConfigs。
     ④.编译res和xml资源 /frameworks/base/tools/aapt/Resource.cpp
        首先解析manifest文件,调用的是parsePackage函数,解析之前,manifest被封装成一个AaptGroup对象。
     ⑤.完成上述的编译资源的工作以后,对于manifest.xml一直都是读取里面的配置信息,并没有编译,所以最后一步就是把manifest.xml编译成二进制文件
     ⑥.最后一步,将上述的编译结果输出到R.java和Apk中。其中还会输出混淆文件,java符号表等。
    

    二.Dalvik虚拟机详解

    理解Android虚拟机体系结构

    Dalvik是Google公司自己设计用于Android平台的Java虚拟机,它是Android平台的重要组成部分,支持dex格式(Dalvik Executable)的Java应用程序的运行。dex格式是专门为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。

    该篇文章引出的相关文章都需要进一步去看.

    三.ART

    在Dalvik下,应用每次运行都需要通过即时编译器(JIT)将字节码转换为机器码,即每次都要编译加运行,这一机制并不高效,但让应用安装比较快,而且更容易在不同硬件和架构上运行。

    ART完全改变了这种做法,在应用安装时就预编译字节码到机器语言,在移除解释代码这一过程后,应用程序执行将更有效率,启动更快。

    Android开发——JVM、Dalvik以及ART的区别

    Android内存优化:DVM和ART原理初探

    相关文章

      网友评论

        本文标题:Dalvik虚拟机与ART虚拟机

        本文链接:https://www.haomeiwen.com/subject/zutcbftx.html