多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] ## 简介 **1.启动电源以及系统启动** 当电源按下时引导芯片代码开始从预定义的地方(固化在ROM)开始执行。加载引导程序Bootloader到RAM,然后执行。 **2.引导程序BootLoader** 引导程序BootLoader是在Android操作系统开始运行前的一个小程序,它的主要作用是把系统OS拉起来并运行。 **3.Linux内核启动** 内核启动时,设置缓存、被保护存储器、计划列表、加载驱动。当内核完成系统设置,它首先在系统文件中寻找init.rc文件,并启动init进程。 **4.init进程启动** 初始化和启动属性服务,并且启动Zygote进程。 **5.Zygote进程启动** 创建JavaVM并为JavaVM注册JNI,创建服务端Socket,启动SystemServer进程。 **6.SystemServer进程启动** 启动Binder线程池和SystemServiceManager,并且启动各种系统服务。 **7.Launcher启动** 被SystemServer进程启动的ActivityManagerService会启动Launcher,Launcher启动后会将已安装应用的快捷图标显示到界面上 。 ![](https://img.kancloud.cn/96/7c/967c816ae87456eef4ccf2d6e711caa1_482x681.png) ## init进程启动 1.创建一些文件夹并挂载设备 2.初始化和启动属性服务 3.解析init.rc配置文件并启动zygote进程 ## Zygote进程总结 1.创建AppRuntime并调用其start方法,启动Zygote进程。 2.创建DVM并为DVM注册JNI. 3.通过JNI调用ZygoteInit的main函数进入Zygote的Java框架层。 4.通过registerZygoteSocket函数创建服务端Socket,并通过runSelectLoop函数等待ActivityManagerService的请求来创建新的应用程序进程。 5.启动SystemServer进程。 ## SystemServer进程启动 1.启动Binder线程池,这样就可以与其他进程进行通信。 2.创建SystemServiceManager用于对系统的服务进行创建、启动和生命周期管理。 3.启动各种系统服务。 ## Launcher进程启动 SyetemServer进程在启动的过程中会启动PackageManagerService,PackageManagerService启动后会将系统中的应用程序安装完成。在此前已经启动的ActivityManagerService会将Launcher启动起来。 ## 参考资料 [Android框架层](http://liuwangshu.cn/categories/Android%E6%A1%86%E6%9E%B6%E5%B1%82/page/3/) []()https://blog.csdn.net/freekiteyu/article/details/79175010