news 2026/4/16 15:01:08

PackageManagerService 简析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PackageManagerService 简析

PackageManagerService

  • PackageManager:一个接口而已,它的实现类是ApplicationPackageManager,但是当你去研究ApplicationPackageManager的源码的时候,你会发现,它的功能其实都是通过一个mPM的变量完成的,它的类型是IPackageManager类型,它就是PackageManagerService在客户端的一个代理,通过这个代理客户端可以调用到PackageManagerService中的一些方法,如获取某一个应用的版本号,其实版本号这些信息最终都是保存在PackageManagerService中的,我们只有通过mPM这个代理才能拿到这些信息。
    • 提供一个ApplicationInfo的所有信息
    • 提供权限相关信息
    • 提供一个安装包信息
    • 安装、卸载、更新app功能
  • PackageManagerService:主要是用来处理apk的安装,卸载和应用程序信息的获取的。完成诸如权限校捡(checkPermission,checkUidPermission),Apk meta信息获取(getApplicationInfo等),四大组件信息获取(query系列方法)等重要功能
  • PackageInstallerService:管理应用的安装过程。
  • Installer :对app进行操作,安装、卸载、更新、迁移

重要目录

/data/system:

  1. packages.xml:记录apk的permissions,flags,ts,version,uesrid等信息,这些信息主要通apk的AndroidManifest.xml解析获取,当系统进行程序安装、卸载和更新等操作时,均会更新该文件。
  2. packages-backup.xml : 备份文件
  3. packages-stopped.xml : 记录被用户强行停止的应用的Package信息
  4. packages-stopped-backup.xml : pakcages-stoped.xml文件的备份
  5. packages.list : 记录非系统自带的APK的数据信息,这些APK有变化时会更新该文件

应用安装涉及到的目录:

  • system/app:系统自带的应用程序,无法删除
  • system/priv-app: 比/system/app权限优先级更高,可以拿到ApplicationInfo.PRIVATE_FLAG_PRIVILEGED特殊权限
  • vendor/app: odm或者oem厂商预制系统App目录
  • vendor/priva-app: 同上
  • data/app:用户程序安装的目录,有删除权限。安装时把apk文件复制到此目录
  • data/data:存放应用程序的数据。无论是系统App还是普通App,App产生的用户数据都存放在/data/data/包名/目录下。
  • data/user/:App数据目录
  • data/dalvik-cache:将apk中的dex文件安装到dalvik-cache目录下。于32位和64位的机器码有所区别,因此这个目录下还会通过子文件夹对oat文件进行分类。
    • /data/dalvik-cache/arm/
    • /data/dalvik-cache/arm64/

PMS构造方法中处理配置文件

1、先读取packages.xml文件内容,解析并保存在成员变量mSettings中。
2、扫描设备中的几个分区目录下的应用文件,把扫描结果保存到PMS的mPackages中。这记录的是当前系统中的应用状态信息
3、后面就是对两次的应用状态信息进行:比对、重新调整、扫描特定目录。
4、最后将应用信息重新写回packages.xml文件

APK的安装过程

  • 将apk文件复制到程序目录下(/data/app/),解压并扫描安装包
  • 为应用创建数据目录(/data/data/package name/)、提取dex文件到指定目录(/data/delvik-cache/)、修改系统包管理信息。

PMS 处理 APP 安装

  • PackageHandle,处理安装消息。PMS通过向PackageHandle发送消息驱动APK复制和安装。
  • 复制APK。绑定DefaultContainerService,复制比较耗时,运行在另一个进程。
  • 安装APK
    1. 检查:在安装前检查是否环境的可靠,如果不可靠会清除复制的APK文件。
    2. 安装:installPackageTracedLI其内部会调用PMS的installPackageLI方法,进行APP安装。
    3. 收尾:处理安装后操作,如果安装不成功,删除掉安装相关的目录与文件。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 16:03:42

Java实现无人健身房物联网系统解析

以下从技术架构深度解析、核心模块实现逻辑、安全与性能优化实践三个维度,对基于Java的无人共享健身房物联网系统进行系统性拆解:一、技术架构深度解析:分层设计与微服务协同表现层多端适配机制UniApp框架:通过Vue语法实现“一次开…

作者头像 李华
网站建设 2026/4/16 7:47:12

强烈安利10个AI论文工具,专科生搞定毕业论文不求人!

强烈安利10个AI论文工具,专科生搞定毕业论文不求人! AI工具,让论文写作不再难 对于专科生来说,毕业论文的撰写往往是一道难以跨越的难关。面对繁重的写作任务、复杂的格式要求以及对学术规范的不熟悉,很多学生感到无从…

作者头像 李华
网站建设 2026/4/16 4:53:55

汽车制造行业KindEditor如何处理设计图WORD粘贴?

企业网站Word粘贴和导入功能开发全记录 需求分析与技术评估 作为福建某软件公司的前端工程师,我最近接到一个企业网站后台管理系统的功能升级需求。客户希望在现有的KindEditor编辑器中增加Word粘贴和文档导入功能,同时支持微信公众号内容粘贴并自动处…

作者头像 李华
网站建设 2026/4/16 12:52:01

免费Nano Banana 制作PPT,SpeedAI 智能体一句话生成

大家好,这里是K姐。 一个帮你追踪最新AI应用的女子! 2026了,不会还有打工人述职汇报是自己哼哧哼哧手搓 PPT 吧? 想用 AI 做 PPT 省时间,很多人第一反应就是 Nano Banana。确实不少大佬用做 Nano Banana 的 PPT&…

作者头像 李华
网站建设 2026/4/16 9:22:00

Flutter 三端应用实战:OpenHarmony 简易文本首字母提取器开发指南

一、为什么需要“简易文本首字母提取器”? 在 OpenHarmony 的内容摘要、笔记整理与快速索引场景中,“首字符”具有独特的信息密度价值: 学生:从课堂笔记中快速提取关键词首字,构建记忆锚点;程序员&#x…

作者头像 李华