PMS服务(安卓)

PWS(Package Manager Service)它是 Android 系统中负责管理应用程序包的核心系统服务。

主要功能

 

应用版本回退

  • 应用安装与卸载管理

    • 安装流程控制:负责解析应用的安装包(APK 文件),检查其完整性和合法性。在安装过程中,PMS 会将应用的代码、资源等文件解压并存储到系统的相应目录,同时在系统数据库记录应用的相关信息,如包名版本号权限列表等。
    • 卸载操作处理:当用户卸载应用时,PMS 会负责删除应用在系统中的所有相关文件和数据,包括应用的安装目录、缓存文件、配置信息等,并从系统数据库中移除该应用的记录,确保系统中不再残留与该应用相关的任何信息。
  • 应用信息管理

    • 元数据存储与查询:存储了所有已安装应用的详细元数据信息,包括应用的名称、图标、描述、开发者信息等。其他系统组件或应用可以通过 PMS 提供的接口查询这些信息,以便在需要时获取应用的相关详情,例如在应用列表中显示应用的名称和图标。
    • 版本管理:跟踪应用的版本号,能够判断应用是否有可用的更新版本。当有新版本的应用安装时,PMS 会根据版本号的规则进行比较和更新操作,确保系统中始终安装的是最新版本的应用,同时也可以提供应用版本回退等功能。

    应用版本更新

  • 版本号比较规则

    • 常见版本号格式:应用的版本号通常采用 “主版本号次版本号修订号” 的格式,例如 “1.2.3”。其中主版本号表示重大功能更新架构变更,次版本号表示新增功能较大的改进,修订号表示小的修复优化
    • 比较逻辑:PMS 在比较版本号时,会从左到右依次比较每个部分的数字。如果主版本号不同,主版本号大的版本为新版本;若主版本号相同,则比较次版本号,次版本号大的为新版本;若次版本号也相同,再比较修订号,以此类推。例如,版本 “2.1.0” 大于 “1.3.0”,“1.2.3” 大于 “1.2.2”。
  • 更新操作流程
    • 检测更新:应用通常会定期向服务器发送请求,检查是否有新版本可用。当发现有新版本时,会通知用户进行更新。用户确认更新后,应用会下载新版本的安装包。
    • 安装包解析与验证:PMS 接收到新版本的安装包后,会对其进行解析,提取出其中的版本号等相关信息,并与当前已安装的应用版本号进行比较。同时,PMS 还会对安装包进行完整性和合法性验证,确保安装包没有被篡改且符合系统的安装要求。
    • 执行更新:如果确认新版本的版本号大于当前版本号,且安装包验证通过,PMS 会开始执行更新操作。它会先停止正在运行的应用进程,然后将新版本的应用代码、资源等文件解压并覆盖安装到系统的相应目录中,更新系统数据库中应用的相关信息,包括版本号、权限列表等。最后,PMS 会启动应用的新版本,完成更新过程。
  • 回退触发方式
    • 用户主动回退:用户可能因为新版本存在兼容性问题、功能不符合需求等原因,希望回退到旧版本。此时,用户可以在系统的应用管理界面中找到相应的应用,并选择版本回退选项。
    • 系统自动回退:在某些情况下,如新版本的应用导致系统不稳定或出现严重错误,系统可能会自动触发版本回退操作,以保证系统的正常运行。
  • 回退操作流程
    • 版本信息获取:当接收到版本回退请求后,PMS 会从系统数据库中获取应用的历史版本信息,包括之前安装过的各个版本的版本号、安装时间等。
    • 回退包准备:PMS 会根据回退目标版本号,查找对应的应用安装包。如果系统中已经保留了旧版本的安装包,PMS 会直接使用该安装包;如果没有,PMS 可能会从应用商店或其他备份位置下载旧版本的安装包。
    • 回退执行:PMS 会先卸载当前版本的应用,删除新版本在系统中安装的所有文件和数据,并恢复系统数据库中应用的相关信息到旧版本的状态。然后,PMS 会使用旧版本的安装包重新安装应用,将应用的代码、资源等文件解压并安装到系统的相应目录中,最后启动应用的旧版本,完成版本回退操作。
  • 权限管理

    • 权限分配与检查:在应用安装时,根据应用在清单文件中声明的权限列表,为应用分配相应的权限。在应用运行过程中,PMS 会负责检查应用是否具有执行特定操作的权限,例如当应用尝试访问用户的通讯录或摄像头时,PMS 会验证该应用是否已经被授予了相应的权限,以保障用户的隐私和系统的安全。
    • 权限变更与管理:允许系统或用户在应用安装后对应用的权限进行更改,例如用户可以在系统设置中手动关闭某个应用的某些权限,PMS 会及时更新应用的权限状态,并在应用下次尝试使用相关权限时进行相应的处理。

工作原理

系统启动时初始化

在 Android 系统启动过程中,PMS 会被加载并初始化。它会扫描系统中所有已安装的应用程序包,解析每个应用的清单文件,获取应用的各种信息,并将这些信息存储到系统的数据库中,以便后续的查询和管理

与 AMS 等服务协作

与 Activity Manager Service(AMS)等其他系统服务密切协作。例如,当 AMS 需要启动一个应用的 Activity 时,它会向 PMS 查询该应用的相关信息,如 Activity 的类名、启动模式等,PMS 会根据请求返回相应的信息,帮助 AMS 完成应用组件的启动过程。

基于 Binder 通信

与应用进程和其他系统服务之间通过 Binder 机制进行通信。应用可以通过 Binder 调用向 PMS 发送查询应用信息、请求安装或卸载应用等操作,PMS 接收到请求后,会根据具体的操作类型进行相应的处理,并通过 Binder 回调将结果返回给应用或其他系统服务。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值