- init进程启动了Zygote进程,Zygote进程又启动了SystemServer进程。
- SystemServer进程,在main函数中创建ServerThread,ServerThread对象启动了多个服务,包括AMS、PMS等。
- PMS的构造函数中,扫描6个目录下的apk文件,并读取apk中的信息,包括资源和AndroidManifest.xml。对AndroidManifest.xml文件的解析,主要是通过xml解析器,读取进程id、权限、四大组件。解析的信息保存在PackageParse.Package对象中。之后PMS跟系统的Installer服务进行通信,通过给Installer服务发送以“install”开头的字符串指令,完成apk的安装。
- AMS调用systemReady函数,启动Launcher进程。手机开机桌面,本身就是一个应用,一般称为Launcher进程,Launcher进程的启动Activity,就叫Launcher,源码目录:
/packages/apps/Launcher2/src/com/android/launcher2/Launcher
,点击查看Android 4.2.2 Launcher源码。 - 用户点击要启动的应用的图标,Launcher会调用
startActivitySafely
方法,方法代码如下:
之前PMS已经读取了apk信息,这些信息的一部分,例如:目标应用的起始Acitvity就存在参数intent中,有了这个intent,Launcher就能顺利启动一个新的应用了。
APP启动流程解析
init进程和Zygote进程
APP安装流程
APP启动流程分析
SystemServer启动服务分析