Android 启动过程:
1. init 进程启动,由内核启动的用户级进程,完成引导过程
2. Native服务启动
3. System Server, Android服务启动
4. Home启动
一:
init进程一起来就根据init.rc和init.xxx.rc脚本文件建立了几个基本服务,Init.rc是Android自己规定的初始化脚本,其包含四个类型的声明:Actioins, Commands, Services, Options
init - - >解析init.rc,将service信息放置到service_list中
- - >service_start, execve(...)建立service进程
二:
Zygote:
Servidemanager 和 zygote进程奠定了Android的基础,Zygote这个进程起来才会建立真正的Android运行空间,初始化建立的Service 都是Navtive service,在.rc脚本文件中
zygote的描述: - -> 建立Java Runtime
- -> 建立虚拟机,运行com.android.internal.os.ZygoteInit: main 函数
- -> 运行第二步的main函数
registerZygoteSocket();
startSystemServer(); 进入Zygote服务框架
经过这几个步骤,Zygote就建立好了,利用Socket通讯,接收ActivityManagerService的请求,Fork应用程序
三:
System Server:
startSystemServer在Zygote上fork了一个进程:con.android.server.System.Service.于是SystemServer就建立了,Android的所有服务循环框架都是建立在SystemServer(SystemServer.java)上
四:
Home启动
初接触Android,看了下启动过程,理解的只是表层面,后续会更新此文章。。
阅读(306) | 评论(0) | 转发(0) |