1)android启动阶段通常是3个阶段:
第一个阶段未uboot,即上电开机到驱动加载前,通常看到的现象为进入开机logo前的阶段;
第二个界面为kernel阶段,即驱动加载阶段,通常看到的现象开机动画显示的前一阶段;
第三个阶段为android启动阶段,即由孵化器ZygoteInit启动系统各个服务,系统各个服务启动完成后会走systemready回调,之后启动systemui服务,之后会遍历所有home属性的activity,然后选择进入launcher,当所有初始化做完之后会发出开机完成boot_complete广播(详细的开机过程网上一搜一大把)
2)与1对应起来,系统编译的流程也是如此,先编译mboot,然后再编译kernel,然后再编译android,到最后将所有生成的文件打包到固件里面(即bin文件),编译android时原生的步骤是
-- source build/envsetup.sh 读取envsetup.sh 中的函数,并执行脚本,配置环境变量等
-- lunch 选择平台编译选项,一般分为user,userdebug,eng,常规的流程应该是给客户的最终版本是user版本,开发版本是userdebug或者eng,开发版本一般都是可以自动打开adb和机器可以root,remount的,user版本则相反,具体详细区别百度一搜一大把
-- make(全编译)或mm(模块编译)
不同厂家有的会做客制化,修改部分的指令,但是基本原理都是一样的
3)make过程
原生的编译安卓指令是make,入口文件是源码树根目录下名称为Makefile的文件,当在源代码根目录上调用 make 命令时,make 命令