Android 系统启动过程
Android 从系统启动有4个步骤: 1, init进程启动 2. Native服务启动 3.System Server,Android服务启动 4.Home启动
第一步: Initial进程(System\core\init) init 进程,它是一个由内核启动的用户级进程.内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程.init始终是第一个进程. init.rc init.marvell.rc Init进程运行就根据init.rc和 init.XX.rc脚本建立了几个基本的服务: servicemanager,zygote.... 最后Ini并不退出,而是担当起property service 的功能. 1.1 脚本文件 init@System/core/Init init.c : parse_config_file(Init.rc) @parse_config_file(Init.marvel.rc) 解析脚本文件init.rc和init.XXX.rc(硬件平台相关)\ Init.rc是Android自己规定的初始化脚本(Android init language,System/core/init/readme.txt) 该脚本中包含四个类型的声明: Actions Commands Services Options. 1.2 服务启动机制 我们来看看Init是怎样解析.rc文件 开启服务的/ 打开.rc文件,解析内容@system/core/init/init.c将Service信息放置到Service_list中.@system\core\init parser.c restart_service()@system\core\init\init.c Service_start execve(...).建立Service进程. 第二步 Zygote ServiceManager和Zygote进程奠定了Android的基础.Zygote这个进程运行都会建立真正的Android运行空间,初始化建立的Service都是Native Service. 在.rc脚本中zygote的描述: service zygote/system/bin/app_process - Xzygote/system/bin --zyote --start - system-server 所以,Zygote从main(...)@frameworks\base\cmds\app_main.cpp开始.
(3)main()@com.android.internal.os.ZygoteInit//正真的 Zygote。 main() @ com/android/server/SystemServer |
更多相关文章
- android webkit 初始化流程
- H5 Web网页通过JS(JavaScript)脚本调用Android本地原生方法函数
- Android---进程间通机制的简单理解
- Android开机执行指定shell脚本
- 在Android中使用Lua脚本 —— Programing Lua on Android
- Android深入浅出系列课程---Lesson3 AAF110427_进程生命周期Proc
- Android进程so注入Hook java方法
- Android之应用进程模型