当前位置: 首页 > news >正文

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. 收尾:处理安装后操作,如果安装不成功,删除掉安装相关的目录与文件。
http://www.jsqmd.com/news/312583/

相关文章:

  • 2026年辽宁资质代办服务推荐榜:监理/设计/电力/市政/水利/勘察/施工/劳务/特种工程等全类别资质专业代办,高效合规助力企业升级
  • 2026 年净化板、净化工程、C 型钢、光伏夹芯板、光伏岩棉板五大优质供应商甄选 实力品牌助力工程建设
  • 【苏州高薪急聘】自动化机械设计师:挑战柔性抓取技术新蓝海 | 省级专精特新企业,定义工业4.0末端执行器
  • 细聊国内有轨电车个性化定制,新阳光价格多少钱
  • 2026年变压器组件抓取方案选型指南
  • 如何选择丰台科技园区写字楼租赁服务商,高性价比场地在哪
  • 东北麻辣烫加盟服务哪家好,结合地区给点建议
  • 2026年 美术培训机构推荐榜:十大画室实力解析,专业师资与升学口碑深度测评
  • 总结好用的铜箔软连接厂推荐哪家
  • 球盒模型
  • 聊聊好用的离心曝气机,蓝奥环保的口碑怎么样?
  • 2026年软体机器人厂家选型指南:精准匹配需求,赋能智能升级
  • 点亮 LED 灯实验(平台总线)
  • 美团App点肯德基更便宜?实测后发现,全家桶9.9元起真的香
  • 冥想第一千七百七十七天(1777)
  • 全网首发!万字硬核解析:如何用向量引擎API构建企业级GPT-5.2与Sora2双模态中台(附完整源码+架构图)
  • Python 金融高级学习计划(金融专业学生版)|务实详解
  • 基于 8086 双机通信数据互发仿真设计
  • HGDB数据库时区修改
  • 昆明市英语雅思培训辅导机构推荐、2026权威出国雅思课程中心学校口碑排行榜
  • 昆明市英语雅思培训辅导机构推荐;2026权威出国雅思课程中心学校口碑排行榜
  • 昆明市英语雅思培训辅导机构推荐:2026权威出国雅思课程中心学校口碑排行榜
  • 2026年电主轴制造与维修优质厂家推荐指南
  • jsdelivr CDN替换地址
  • Linux chown命令
  • 昆明市英语雅思培训机构推荐,2026权威测评出国雅思辅导机构口碑榜单
  • Flutter 三端应用实战:OpenHarmony 简易文本首尾字符对比器开发指南
  • Flutter 三端应用实战:OpenHarmony 简易文本末尾字符查看器开发指南
  • 状态观测器深入浅出:从“为何需要”到“如何设计”
  • Java源码:无人共享健身房物联网方案