android-PMS-包加载的顺序

发布于:2025-07-31 ⋅ 阅读:(21) ⋅ 点赞:(0)

Android PackageManagerService (PMS) 加载包的顺序遵循严格的系统初始化流程,核心步骤如下:

📦 包加载顺序流程

  1. 初始化系统核心资源
    PMS 构造函数中首先加载 Framework 资源(framework-res.apk)和系统核心库 (core libraries) 。

  2. 扫描系统预装应用目录
    按顺序扫描以下系统级目录:

    • /system/framework/(系统框架资源)
    • /system/app/(核心系统应用)
    • /system/priv-app/(特权系统应用)
    • /vendor/app/(供应商应用)
    • /oem/app/(OEM定制应用)
  3. 解析系统包信息
    读取 /data/system/packages.xml 历史安装记录,恢复已安装应用状态 。

  4. 扫描第三方应用目录
    最后加载用户安装的第三方应用:

    • /data/app/(用户安装的 APK)
    • /data/app-private/(受保护的应用) 。
  5. 构建应用信息表
    解析所有 APK 的 AndroidManifest.xml,构建全局的包信息树(PackageInfo)和组件注册表 。

⚙️ 关键机制说明

阶段 操作内容
目录扫描 使用 scanDirLI() 遍历目录,仅解析 .apk 文件,忽略其他类型文件 。
数据同步 将扫描结果与 packages.xml 记录比对,更新 PMS 内部状态(Settings 类) 。
多用户处理 为每个用户创建独立的数据目录(如 /data/user/0/),隔离应用数据 。
缓存优化 解析结果缓存至内存,后续组件启动(Activity/Service)直接查询缓存 。

🔍 特殊场景处理

  • 系统更新:优先加载 /system 目录新版本覆盖旧版本 。
  • 安装新应用:触发独立流程(写入临时文件 → 校验签名 → 解析 → 移动至 /data/app) 。
  • 多架构支持:安装时根据 ABI 提取原生库(lib/arm64)到应用私有目录 。

💡 此顺序确保系统核心组件优先初始化,用户应用后加载,保障系统稳定性 。

引用链接:
1.Android PMS流程 - CSDN
2.深入PMS源码(一)—— PMS的启动过程和执行流程 - CSDN博客
3.android中pms安装应用流程 - 51CTO博客
4.Android PMS应用安装流程源码分析下篇-安装包校验及安装 - 掘金开发者社区
5.apk安装过程解析之理解包管理机制和PMS - CSDN下载
6.深入解析 Android PMS —— APK 安装与解析全流程 - CSDN博客
7.Android PMS开机结束标志 android开机启动流程 - 51CTO博客
8.Android PMS工作原理及启动流程 - 博客园
9.PMS安装APP流程解析 - 51CTO
10.Android系统-包管理机制(一)PMS服务启动 - CSDN博客
11.Android程序包管理机制解析和PMS启动流程分析 - CSDN博客
12.android PMS 基本使用安装apk - 51CTO博客
13.android PMS安装应用流程 android ams pms wms - 51CTO博客
14.Android PMS——pm命令解析(八) - CSDN下载
15.Android PMS 优化开机速度深度优化方案 - 掘金开发者社区
16.apk安装过程解析之理解包管理机制和PMS - CSDN下载
17.Android包管理机制(一)PackageInstaller的初始化 - 腾讯云
18.PMS-PKMS的初始化 - 掘金开发者社区
19.Springboot中application.yml、application.properties和bootStrap.yml的加载顺序 - wanshaohui
20.PMS-框架 - 掘金开发者社区


网站公告

今日签到

点亮在社区的每一天
去签到