您的位置:首页 > 移动开发 > Android开发

Android启动过程的相关学习

2016-03-17 09:39 351 查看
今天研究了一下Android的启动过程相关的知识,在这里记录与分享一下。我画了一个图用来理清顺序:



Android设备的启动必须经历3个阶段,即Boot Loader,Linux Kernel和Android系统服务,其中Boot Loader对应于第一步和第二步,主要是做引导。而Linux kernel则是启动内核,至于第四步和第五步则是对应于Android系统服务,默认情况下它们都有各自的启动画面。
作为Android中第一个被启动的进程,init的PID值为0。它通过解析init.rc脚本来构建出系统的初始运行形态——其他的Android系统服务程序大多是这个“rc”脚本中描述并被相继启动的。(G:\android 5.0系统源码\source\system\core\rootdir\init.rc,这个可以到自己相应的磁盘目录查看)
init.rc脚本的语法也很好理解,主要是由4种类型的声明组成。即:1、Action(动作)2、Commands(命令)3、Services(服务)4、Options(选项)。
注意:Actions和Services暗示着一个新语句的开始,这两个关键字后面跟着的commands或者options都属于这个新语句。Actions和services有唯一的名字,如果出现和已有动作或服务重名的,将会被当成错误忽略掉。
至于Action、Command、Service、Options的一些详细的语法含义以及命令含义,可以参考《深入理解Android内核设计思想》一书中的第七章内容。
作为Android系统的第一个进程,init将通过解析init.rc来陆续启动其他关键的系统服务进程——其中最重要的就是ServiceManager,Zygote和SystemServer。
这里主要记录两点:(1)Android中大多数应用的进程和系统进程都是通过Zygote来生成的。(2)SystemServer是Android进入Launcher前的最后准备,它提供了众多由Java语言编写的“系统服务”。
其他相关文章:http://blog.jobbole.com/67931/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: