目录

Android ART加载流程学习与分析

ART虚拟机介绍

Android Runtime (ART) 是 Android 上的应用和部分系统服务使用的托管式运行时。ART 及其前身 Dalvik 最初是专为 Android 项目打造的。作为运行时的 ART 可执行 Dalvik 可执行文件并遵循 Dex 字节码规范。1ART 和 Dalvik 是运行 Dex 字节码的兼容运行时,因此针对 Dalvik 开发的应用也能在 ART 环境中运作。不过,Dalvik 采用的一些技术并不适用于 ART。

App加载流程跟踪

下面通过一个APP的加载,梳理一下ART虚拟机加载APP的关键点,此处使用AOSP 10来进行分析

当新建一个APP时,最开始的入口是MainActivity,我们在这里增加调用栈打印

https://gitee.com/jygzyc/blog_img/raw/master/pic/image-20210818234753216.png

我们通过结合调用栈,逐步跟踪,简书上已经有比较好的文章23,这里参考一下流程图

https://gitee.com/jygzyc/blog_img/raw/master/pic/webp-16293022925576.webp

从流程图上我们可以看到Launcher App使用binder拉起了AMSAMS再通过创建zygote的子进程从而拉起App的进程


  1. Android Runtime (ART) 和 Dalvik | Android 开源项目 ↩︎

  2. App 启动流程分析(基于 Android 10) - 简书 (jianshu.com) ↩︎

  3. Android 10.0 Activity的启动流程 - 简书 (jianshu.com) ↩︎