初探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。

    原文作者:茈男子淡漠
    原文地址: https://blog.csdn.net/w1070216393/article/details/76670852
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞