Dalvik虚拟机与ART虚拟机

一.储备阅读:

1.Android 打包过程

打包流程图:

Dalvik虚拟机与ART虚拟机_第1张图片
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设计的一种压缩格式,适合内存和处理器速度有限的系统。

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

  • Android系统启动分析

  • 内存管理

三.ART

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

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

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

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

你可能感兴趣的:(Dalvik虚拟机与ART虚拟机)