android-PMS-常见定制场景
以下是基于 Android 9 的 Package Manager Service (PMS) 常见定制场景及关键技术实现方案:
🔒 一、应用安装控制
-
密码锁机制
- 实现逻辑:在
PackageManagerService.installPackageLI()
方法中植入密码校验逻辑,第三方 APK 安装时触发验证流程,校验通过后方可继续安装过程。需覆盖 ADB 安装、PackageInstaller 及静默安装等所有入口。 - 核心修改文件:
frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java
。
- 实现逻辑:在
-
应用安装数量限制
- 定制方式:在 PMS 安装流程中增加计数器逻辑,当检测到第三方应用数量超过预设阈值(如 50 个),直接中断安装并返回错误码
INSTALL_FAILED_MAX_APP_LIMIT
。
- 定制方式:在 PMS 安装流程中增加计数器逻辑,当检测到第三方应用数量超过预设阈值(如 50 个),直接中断安装并返回错误码
️ 二、权限管理增强
-
特权应用权限白名单
- 配置机制:在
/system/etc/permissions/
目录下创建privapp-permissions.xml
,明确声明特权应用(priv-app)可使用的签名级权限。不同系统分区(/system
、/vendor
)需独立配置权限白名单。 - 风险提示:配置错误可能导致系统无法启动,需严格测试权限列表有效性。
- 配置机制:在
-
签名权限强化校验
- 实现点:修改
PackageManagerService.checkSignatures()
方法,增加自定义签名证书比对逻辑,阻止非授权签名应用获取敏感权限(如INSTALL_PACKAGES
)。
- 实现点:修改
👁️ 三、应用可见性管理
- 动态隐藏应用
- 注入逻辑:在
PackageManagerService.queryIntentActivities()
及queryIntentServices()
等方法中插入包名过滤规则,拦截预定义应用(如测试工具)在桌面、设置等系统界面中的显示。 - 核心修改类:
PackageManagerService.java
及android.content.pm.PackageManager
接口实现。
- 注入逻辑:在
⚡ 四、性能优化定制
- 多线程扫描加速
- 启用系统属性
ro.pms.parallel_scan
,实现多线程并发解析 APK(尤其针对/system/app
、/data/app
等目录),缩短开机时间 30% 以上。
说明:Android ≥8.0:默认多线程(4 线程),通过线程池并行解析
- 启用系统属性
- 延迟非核心应用加载
- 将用户应用(
/data/app
)扫描推迟至BOOT_COMPLETED
广播之后,确保系统核心服务优先启动。
- 将用户应用(
- 增量缓存机制
- 利用
/data/system/package_cache
缓存已解析的包信息,通过监听 APK 目录变更(inotify
)仅处理新增/修改文件。
- 利用
⚠️ 厂商适配关键点
定制场景 | 技术风险与解决方案 |
---|---|
密码锁 | 需覆盖 ADB 安装入口,避免 pm install 命令绕过验证 |
权限白名单 | 同步调整 SELinux 策略,防止 avc: denied 权限拦截异常 |
多线程扫描 | 通过 cgroups 限制扫描线程的 CPU/IO 占用,避免与 Zygote 进程资源冲突 |
注:深度定制需充分测试 系统升级场景,确保 OTA 后定制逻辑兼容性。
引用链接:
1.Android PackageManagerService(PMS)框架深度解析 - CSDN博客
2.深入解析 Android PMS —— APK 安装与解析全流程 - CSDN博客
3.Android 12.0 PMS限制第三方app安装数量功能实现 - CSDN下载
4.通俗易懂讲解 PackageManagerService(PMS):Android 系统的 “应用管家” - 掘金开发者社区
5.Android Framework中PackageManagerService的深度剖析 - 洪信智能
6.Android PMS流程 - CSDN
7.核心服务二:PackageManagerService - 稀土掘金
8.android中pms安装应用流程 - 51CTO博客
9.Android PMS 优化开机速度深度优化方案 - 掘金开发者社区
10.Pmsϵͳ - 乐悠妈育儿经
11.App architecture - Android
12.android系统 pms详解 - CSDN博客
13.Android系统重要组件PMS - CSDN博客
14.Android PMS——PMS处理pm命令(九) - CSDN下载
15.Android:PMS学习笔记 - 博客园
16.从一开始就针对大屏设备进行设计 | Android media | Android Developers - Android
17.為各種螢幕大小做好準備 | Wear | Android Developers - Android
18.通俗易懂讲解 PKMS:从全局视角看 Android 应用管理的核心机制 - 掘金开发者社区
19.android PMS预授权 - 51CTO博客
20.Android 9.0 pms获取应用列表时过滤掉某些app功能实现 - CSDN下载
21.android pms powermanagerservice - 博客