安卓系统启动流程
安卓系统,底层使用的是linux系统.在linux应用层至上实现了java环境和安卓系统需要的各种库 组件等.下图是安卓系统的框架:
我们发现整个安卓系统严重依赖于linux kernel,基于linux提供的app接口,实现了 java虚拟机,安卓各种库文件. 基于这些库,开发app,运行java程序.
所以应该从底层开始启动,首先是 bootloader, kernel , java库 jvm初始化, framework初始化,app初始化,由下往上依次进行.
bootloader,即引导程序,用于加载os,嵌入式上使用的是u-boot,手机上一般使用的是recovery. bootloader实现开机启动,然后加载linux系统.linux系统往上继续启动.
linux在启动过程中会开创第一个 进程init进程,init进程会根据/etc/init.d/rcS中的描述,加载一些应用程序,开机启动. 我们可以将安卓启动的命令安排在该脚本即可.
下图是应用层的启动过程:
上图中,有C语言进入C++环境,cpp主要用于实现一些库,比如音视频算法 图形库 等.通过JNI的方式 和java语言进行通信.最终执行到java程序,启动java服务.