Android 框架研究:(一)框架概要 —— 1.3 启动流程的分析

分析Android Framework有什么好方法呢?回答这一问题之前,先回想一下我们是如何分析他人编写的代码的。

在分析程序代码时,我们通常从程序的入口main()函数开始,一点一点地理清程序流程,把握程序的运行过程。同样,在分析结构庞大的Android Framework时,也要从Android平台启动过程入手。

Android启动过程包含从Linux内核加载到Home应用程序启动的整个过程,依次分析这一过程,有利于我们系统地理解Android Framework运行的原理。

下图简单地描述了Android的启动过程。


1. Linux内核

Android是基于Linux内核的系统平台。启动时,首先通过bootloader(系统加载器),加载Linux内核。在Linux加载启动时,与普通的Linux启动过程相同,先初始化内核,然后调用init进程。

2. init

Android init进程对各种设备进行初始化,运行Android Framework所需用的各种Daemon、Context Manager、Media Manager、Zygote等。

init进程执行的Daemon进程:

  • USB Daemon:管理USB连接。
  • Android Debug Bridge Deamon:ADB连接管理。
  • Debugger Daemon:启动Debugger系统。
  • Radio Interface Layer Daemon:管理无线通信连接。

3. Context Manager

Context Manager是一个管理Android系统服务的重要进程。系统服务是组成Android Framework的重要组件,提供从相机、音频、视频处理到各种应用程序制作所需要的重要的API。

Context Manager提供运行于Android内的各种系统服务信息。应用程序或Framework内部模块在调用系统服务时,需要先向服务管理器申请,而后通过Binder IPC调用系统服务。

在系统启动时,Android所有系统服务都要把各自的handler信息注册到Context Manager。此时,Binder IPC用来进行进程间的通信。

4. Media Server

Media Server用于运行急促C/C++的本地系统服务,如Audio Manager、Camera等。

5. Zygote

Zygote进程用于缩短Android应用程序加载的时间。每当执行Java应用程序时,Zygote就会派生出一个子进程来执行应用程序,该子进程就是用来执行Java应用程序的虚拟机。

6. System Server

System Server是Android系统的一个核心进程,它是由Zygote进程创建的,在Android启动过程中位于Zygote之后。在System Server中可以看到它建立的Android中大部分的服务,如Activity Manager Service、Location Manager Service等。

为了将运行在SystemServer中的Java系统服务提供给Android应用程序或Framework内部模块调用,需要先将它们注册到Context Manager中。

在通过Binder IPC将Java系统服务注册到基于C语言的服务管理器时,需要使用JNI本地编程接口。

       

以上就是对Android启动过程以及Framework初始化的简单介绍。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值