Android 框架研究:(一)框架概要 —— 1.3 启动流程的分析
2012-05-25 08:33
465 查看
分析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初始化的简单介绍。
在分析程序代码时,我们通常从程序的入口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初始化的简单介绍。
相关文章推荐
- Android 框架研究:(一)框架概要 —— 1.3 启动流程的分析
- Android 框架研究:(一)框架概要 —— 1.3 启动流程的分析
- Android源码/框架源码分析及Actviity/View等的启动流程
- Android研究-Android的init启动到launcher启动-主要分析zygote服务
- android系统启动及wifi框架分析
- Android APP启动关键流程分析
- [Android]Android系统启动流程源码分析
- Android 6.0 应用启动全流程源码分析
- Android 关于Notification 点击启动流程分析
- 源码分析篇 - Android绘制流程(一)窗口启动流程分析
- Phalcon框架启动流程(部分源码)分析
- Android WifiService的启动流程分析
- Android进阶系列之源码分析Activity的启动流程
- android开机启动流程简单分析
- 【Android】源码分析 - Activity启动流程
- Android研究-GUI框架-Android的View的简单绘制流程
- Android Framework启动流程分析
- Android Application启动流程分析