Chinaunix首页 | 论坛 | 博客
  • 博客访问: 50241
  • 博文数量: 25
  • 博客积分: 166
  • 博客等级: 入伍新兵
  • 技术积分: 177
  • 用 户 组: 普通用户
  • 注册时间: 2011-12-28 08:57
文章分类

全部博文(25)

文章存档

2015年(2)

2013年(1)

2012年(18)

2011年(4)

我的朋友

分类: Android平台

2015-07-07 17:44:04


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,看了下启动过程,理解的只是表层面,后续会更新此文章。。
阅读(278) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~