[灌水] 简单聊下 SystemServer 都干了些什么
[灌水] 简单聊下 SystemServer 都干了些什么
system_server 进程作为 Android 的操作系统基础能力提供者,其本身启动的时候需要进行一些处理才能保证 Android 系统的完整运行。本文简单灌水式说明一下 system_server 初始化的时候执行的操作,总共分为三个部分。
第一步:创建 system_server 进程必须的辅助对象、上下文环境等。
例如通过 ActivityThread 创建 context / Application / Instrumentation
第二步:初始化上下文信息,初始化必备的辅助对象。
- 设置系统信息 (这部分信息会被各种 service 使用)
- 整体的 重启信息、启动时间 等相关信息
- 设备默认 区域、语言、城市 等信息
- 设置工具类信息 (这部分设置会影响各个 service )
- 设置 Environment 、 Binder 、Parcel 等的基本属性
- 初始化一个 serviceManager 对象,用于管理下面要打开的其他 service
第三步:启动其他的 services
这部分的 service 总共分为三类,bootstrp(鞋带,表示这是第一步) 、核心 service 以及其他的杂项功能。分别简单描述如下:
-
bootstrapService
- system-设备 一侧 相关的: WatchDog / Recovery / PowerManagerService / PackageManagerService /
- 其他app - 平台 一侧相关的:AMS
- 这些 service 之间互相关系的初始化(加入到 watchDog 等)
-
coreService
- 一些系统状况监测服务,例如 BatteryService / binder stats / looper stats
-
otherService 杂项 service
- 设备硬件服务 : 传感器 、vr / inputManager /
- 系统软件服务 : accountManager / 升级 、backup / 设备时间、时区、国家、位置 / 搜索
- 外设 : 打印机 、 HDMI 、 TV 、 媒体源 、 TV-remote 、
- 系统桌面 : 快捷方式 、 launcher 、 壁纸
- 代码处理 : adb 、
- 手表⌚️处理 :
- APP 功能 : 粘贴板 、 NotificationManager 、
- 安全 & 识别 : 脸部识别 、虹膜 、 指纹 、 声音识别 、摄像头前的手势处理
- 蓝牙网络 :蓝牙 / 网络检测、适配、状态监控 / wifiAware / wifi-rtt / wifip2p / ethernet / connectivity /
- WMS
最后会初始化各个 service 之间的交互。