1.SystemServer
- 创建并启动主线程 Looper,使能线程间通讯:
Looper.prepareMainLooper
,Looper.loop
- 加载 android_servers.so 库:
System.loadLibrary("android_servers")
- 初始化系统上下文:
createSystemContext
- 创建系统服务管理 ServiceManager:
new SystemServiceManager
- 启动各种服务:
startBootstrapServices
,startCoreServices
,startOtherServices
SystemServer启动Launcher流程
SystemServer启动SystemUI的过程
引导服务
LightsService,UserManagerService,SensorService,DisplayManagerService,PackageManagerService,ActivityManagerService,PowerManagerService
核心服务
BatteryService,UsageStatsService,WebViewUpdateService
其它服务
主要做的就是启动一系列的服务(共 70 余个),如:AlarmManagerService,VibratorService 等。
2.ActivityManagerService:
负责Android管理系统Activity,Service,ContentProvider和BroadcastReceiver 四大组件,
还负责Android系统中的进程管理
3.PowerManagerService
-
解析AndroidManifest.xml 主要包括AndoridManifest中节点的信息。
-
扫描本地文件,主要针对apk,主要是系统应用,本地安装应用等。
-
管理本地apk,主要包括安装和删除等。
阶段1:BOOT_PROGRESS_PMS_START
主要工作:
-
构造DisplayMetrics,保存分辨率等相关信息
-
创建Installer对象 与InstallId交互
-
创建mPermissionManager对象,进行权限管理
-
构造Settings类,保存安装包信息,清除路径不存在的孤立应用,主要涉及/data/system目录下的packages.xml,package-backup.xml,packages.list,packages-stopped.xml,packages-stopped-backup.xml等文件。
-
构造PackageDexOptimizer及DexManager类,处理dex优化;
-
创建SystemConfig实例,获取系统配置信息,配置共享lib库
-
创建PackageManager的handler线程,循环处理外部安装相关消息。
阶段2:BOOT_PROGRESS_PMS_SYSTEM_SCAN_START
主要工作:
- 从init.rc中获取环境变量BOOTCLASSPATH和SYSTEMSERVERCLASSPATH;
- 对于旧版本升级的情况,将安装时获取权限变更为运行时申请权限
- 扫描system/vendor/product/odem/oem 等目录的priv-app ,app ,overlay包
- 清除安装时临时文件以及其他不必要的信息。
阶段3:BOOT_PROGRESS_PMS_DATA_SCAN_START
主要工作:解析核心应用,处理data目录下的应用信息,更新,删除不必要的数据。
阶段四:BOOT_PROGRESS_PMS_SCAN_END
主要工作:
- sdk版本变更,更新权限
- OTA升级后首次启动,清除不必要的缓存数据
- 权限等默认更新后,清理相关数据
- 更新package.xml
阶段五:BOOT_PROGRESS_PMS_READY
主要工作有:
- 创建PackageInstallerService对
- GC回收内存