1、BootLoad:电源键按下,引导芯片代码从预定义的地方(ROM)开始执行,加载引导程序到RAM中执行,主要初始化硬件设备和建立内存空间映射图,目的是为操作系统内核准备好环境;
2、Kernel:Android内核开始启动,主要设置缓存和加载驱动等,当内核系统设置完毕,会在系统文件中寻找“init”文件,启动root进程(第一个进程);
3、Init进程:由内核自行启动的一个用户级进程,启动过程就是init.c中main函数的执行过程,包括文件夹建立、挂载、rc文件解析、启动服务、属性设置等,其中.rc文件是Android初始化的脚本文件;
4、Zygote进程:系统启动过程中,由init进程创建,它是Native应用程序,与驱动内核无关,由它来fork出所有的应用程序进程和系统服务进程,作用是作为一个虚拟机进程,预加载和初始化核心库类,让Dalvik虚拟机共享代码、降低内存占用和启动时间;
-------Zygote进程包括两个模块:Socket服务端(用于接受启动新的Dalvik虚拟机命令)和Framewo共享类和共享资源;
-------Zygote启动分为两个阶段:虚拟机启动(通过Native启动---启动虚拟机、初始化、注册JNI函数、构造java运行时环境)和SystemService进程(通过java启动---注册socket监听、加载系统资源和常用类、启动系统服务进程、进入循环监听模式、进程退出时关闭socket监听);
5、启动系统服务;
6、引导完成。