Android Framework(一)

Android Framework(一)_第1张图片

android采用了分层的框架分为4层,分别是应用程序层,应用程序框架层,系统运行库层,Linux核心层

Android Framework(一)_第2张图片

1、Linux内核

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

2、init

Android init进程对各种设备进行初始化,运行Android FrameWork所需的各种Daemon、ContextManager、Media ServerSocket、Zygote等。

以下是init进程执行的Daemon进程:

(1)USB Daemon(usbd):管理USB连接

(2)Android Debug Bridge Daemon(adbd):Android Debug Bridge连接管理

(3)Debugger Daemon(debuggerd):启动Debugger 系统

(4)Radio Interface Layer Daemon(rild):管理无线通信连接

3、Context Manager

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

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

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

4、Media Server

Media Server用于运行基于C/C++的本地系统服务,如Audio Flinger(负责音频输出)、Camera等。

5、Zygote

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

6、System Server

System Server是Android系统的一核心进程,他是由zygoge进程创建的,在Android启动的过程中位于Zygoge之后,在System Server 中可以看到它建立的Android 中的大部分服务,如Activity Manager Service(管理应用程序的生命周期)、Location Manager Service(提供终端的地理位置的信息)等。

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

在通过Binder IPC将Java系统服务注册到基于C语言的服务管理器的时候,需要使用JNI(Java Native Interface)本地编程接口。JNI允许Java代码与其他的编程语言(如C、C++、汇编语言)编写的应用程序和库进行交互操作。

你可能感兴趣的:(android随笔)