Android 框架相关知识概述。
# Android 启动过程
Android 启动时,首先通过 bootloader (系统加载器) 加载 Linux 内核。Linux 加载启动时,先初始化内核,再调用 init 进程。
# init 进程
init 进程会运行 Android Framework 所需的 Daemon, Context Manager, Media Server, Zygote 等。
# Daemon
以下是 init 进程执行的 Daemon 进程。
1 | # USB Daemon (usbd): 管理 USB 连接。 |
# Context Manager
Context Manager 是一个管理 Android 系统服务的重要进程,系统服务提供从相机,音频,视频处理到各种应用程序制作所需要的 API。
Context Manager 还提供用于 Android 内的各种系统服务信息。应用程序或 Frameword 内部模块在调用系统服务时,需要先向服务管理器申请,再通过 Binder IPC 调用系统服务。
系统启动时,Android 所有系统服务都要把各自的 handle 注册到 Context Manager。
# Media Server
Media Server 用于运行基于 C/C++ 的本地系统服务,如 Audio Flinger,Camera 等。
# Zygote
Zygote 进程用于缩短 Android 应用程序加载时间,每当执行 java 应用程序时,Zygote 会派生一个子进程来执行程序,该子进程就是虚拟机。
# System Server
Syetem Server 是 Android 系统的一个核心进程,它有 Zygote 创建,所以启动过程位于 Zygote 之后。在 System Server 中可以看到它建立的 Android 中的大部分服务,为了将运行在 System Server 中的 java 系统服务提供给 Android 程序或 Framework 内部模块调用,需要先将它们注册到 Context Manager 中。