Android Framework原理,android实战项目pdf

启动Android

当初始化内核之后,init进程负责解析init.rc配置文件, 就会启动一个相当重要的祖先进程,也就是init进程,在Linux中所有的进程都是由init进程直接或间接fork出来的

  • /system/bin/app_process_Zygote服务启动的进程名

  • –start-system-server 表明Zygote启动完成后,需要启动System_Server进程

  • socket zygote stream 666在Zygote启动时,创建一个权限为666的socket。此socket用来请求zygote创建新进程

  • socket的fd保存在名称为"ANDROID_SOCKET_zygote"的环境变量中

init进程负责创建系统中最关键的几个核心daemon(守护)进程,尤其是zygote和System_Server进程

  1. zygote进程 android启动的第一个Dalvik 虚拟机,它将负责启动Java世界的进程

  2. zygote虚拟机启动子进程system_server,同时也可以看出zygote中定义了一个Socket,绑定666端口,用于接收ActivityManagerService启动应用程序的请求

  3. System_Server进程 Binder通信的基础,它还提供了property service(属性服务),类似于windows系统的注册表服务

  4. 系统里面重要的服务都是在这个进程里面开启的,例如AMS, WindowsManager, PackageManagerService等等都是由这个System_Server fork出来的

  5. 在System_Server进程开启的时候,就会初始化ActivityManagerService 。同时,会加载本地系统的服务库,调用createSystemContext()创建系统上下文,创建ActivityThread及开启各种服务等等

  6. system_server中开启了核心系统服务,并将系统服务添加到ServiceManager中,然后系统进入SystemReady状态

启动Home Activity

  1. 在systemReady状态,ActivityManagerService会与zygote的Socket通信,请求启动Home

  2. zygote收到AMS的连接请求后,执行runSelectLoopMode处理请求

  3. zygote处理请求会通过forkAndSpecialize启动新的应用进程,并最终启动Home

概况

  1. 系统加电,执行bootloader。Bootloader负责初始化软件运行的最小硬件环境,最后加载内核到内存

  2. 内核加载到内存后,进入内核引导阶段,在内核引导的最后,调用start_kernel进入内核启动阶段。start_kernel最终启动用户空间的init程序

  3. init负责解析init.rc配置文件,开启系统守护进程。2个最重要的守护进程是zygote进程和serverManager进程。zygote是android启动的第一个Dalvik虚拟机,ServiceManager服务是Binder通信的基础

  4. zygote虚拟机启动子进程system_server,在system_

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值