初探Android PMS服务


Android系统中PackageManagerService简称PMS,主要负责各种APK的安装,卸载,优化和查询。

android系统中,pm工具是PMS的一个展现命令。通过了解pm的使用,可以了解PMS究竟提供了哪些具体的功能,进而帮助我们理解和分析PMS的源码实现。

pm使用

利用adb shell命令,进入Android设备的终端,pm工具在/system/bin中,所以可以直接使用:

1
pm <command>
包名信息查询
1
pm list packages [options] [FILTER]

打印所有的已经安装的应用的包名,如果设置了文件过滤则值显示包含过滤文字的内容.

参数:

-f 显示每个包的文件位置

-d 使用过滤器,只显示禁用的应用的包名

-e 使用过滤器,只显示可用的应用的包名

-s 使用过滤器,只显示系统应用的包名

-3 使用过滤器,只显示第三方应用的包名

-i 查看应用的安装者

权限信息查询

打印所有已知的权限组

1
pm list permission-groups

打印权限:

1
pm list permissions [options] [GROUP]

参数:

g 按组进行列出权限

-f 打印所有信息

-s 简短的摘要

-d 只有危险的权限列表

-u 只有权限的用户将看到列表用户自定义权限

Android 6.0之后,允许授权和取消权限:

1
pm grant <package_name> <permission>    
pm revoke <package_name> <permission>

授权和取消是针对APK中申请的权限的来说的。即APK中没有申请的权限,是没办法通过此命令添加的。

测试包
1
pm list instrumentation 参数

无参数 列出所有的instrumentation测试

-f 列出apk文件位置

target_package 列出某个app的测试包

包路径
1
pm path package_name
系统硬件特性
1
pm list features
设备依赖的java库
1
pm list libraries
dump包信息
1
pm dump package_name
安装与卸载apk

安装apk

1
pm install [-lrtsfd] [-i PACKAGE] [PATH]

adb install实际上就是对pm install的封装调用。

参数:

-l 锁定应用程序

-r 重新安装应用,且保留应用数据

-t 允许测试apk被安装

-i INSTALLER_PACKAGE_NAME 指定安装包的包名

-s 安装到sd卡

-f 安装到系统内置存储中(默认安装位置)

-d 允许降级安装(同一应用低级换高级)

-g 授予应用程序清单中列出的所有权限(只有6.0系统可用)

卸载apk:

1
pm uninstall [options] <PACKAGE>

参数:
-k 卸载应用且保留数据与缓存(如果不加-k则全部删除)

清除应用数据
1
pm clear package_name
禁用和启用系统应用
1
pm enable <PACKAGE_OR_COMPONENT>   使package或component可用
pm disenable <PACKAGE_OR_COMPONENT>    使package或component不可用(直接就找不到应用了)
pm disenable-user [options] <PACKAGE_OR_COMPONENT> 使package或component不可用(会显示已停用
隐藏与恢复应用
1
pm hide PACKAGE_OR_COMPONENT
pm unhide PACKAGE_OR_COMPONENT

被隐藏应用在应用管理中变得不可见,桌面图标也会消失

设置和查看应用的安装位置
1
pm   set-install-location 参数 package_name
pm   get-install-location package_name

参数:
0:自动-让系统决定最好的位置
1:内部存储-安装在内部设备上的存储
2:外部存储-安装在外部媒体

查看当前系统user信息
1
pm list users

可以指的apk安装在某个user下,这样只有切换到该user时,才能显示和使用该apk。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值