Mr_老冷 发表于 2023-12-16 16:05:22

【安卓】shell pm命令详解

一、Pm命令1.1 命令列表命令格式:pm <command>

命令列表:

命令功能实现方法
list packages列举app包信息PMS.getInstalledPackages
install <PATH>安装应用PMS.installPackageAsUser
uninstall <package>卸载应用IPackageInstaller.uninstall
enable <包名或组件名>enablePMS.setEnabledSetting
disable <包名或组件名>disablePMS.setEnabledSetting
hide <package>隐藏应用PMS.setApplicationHiddenSettingAsUser
unhide <package>显示应用PMS.setApplicationHiddenSettingAsUser
get-install-location获取安装位置PMS.getInstallLocation
set-install-location设置安装位置PMS.setInstallLocation
path <package>查看App路径PMS.getPackageInfo
clear <package>清空App数据AMS.clearApplicationUserData
get-max-users最大用户数UserManager.getMaxSupportedUsers
force-dex-opt <package>dex优化PMS.forceDexOpt
dump <package>dump信息AM.dumpPackageStateStatic
trim-caches <目标size>紧缩cache目标大小PMS.freeStorageAndNotify

pm命令实的实现方式在Pm.java,最后大多数都是调用PackageManagerService相应的方法来完成的。disbale之后,在桌面和应用程序列表里边都看到不该app。1.2 pm list packages命令查看所有的packagelist packages <FILTER>

其中参数:
[*]-f: 显示包名所关联的文件;
[*]-d: 只显示disabled包名;
[*]-e: 只显示enabled包名;
[*]-s: 只显示系统包名;
[*]-3: 只显示第3方应用的包名;
[*]-i: 包名所相应的installer;
[*]-u: 包含uninstalled包名.
规律: disabled + enabled = 总应用个数; 系统 + 第三方 = 总应用个数。比如:查看第3方应用:pm list packages -3

又比如,查看已经被禁用的包名。(国内的厂商一般把google的服务禁用了)pm list packages -d

<FILTER>参数:当FILTER为不为空时,则只会输出包名带有FILTER字段的应用;当FILTER为空时,则默认显示所有满足条件的应用。比如,查看包名带google字段的包名pm list packages google

1.3 pm install命令安装应用pm install <PATH>

其中参数:
[*]-r: 覆盖安装已存在Apk,并保持原有数据;
[*]-d: 运行安装低版本Apk;
[*]-t: 运行安装测试Apk
[*]-i : 指定Apk的安装器;
[*]-s: 安装apk到共享快存储,比如sdcard;
[*]-f: 安装apk到内部系统内存;
[*]-l: 安装过程,持有转发锁
[*]-g: 准许Apk manifest中的所有权限;
PATH参数:该参数是必须的,是指需要安装的apk所在的路径。1.4 其他参数
pm list users //查看当前手机用户
pm list libraries //查看当前设备所支持的库
pm list features //查看系统所有的features
pm list instrumentation //所有测试包的信息
pm list permission-groups //查看所有的权限组
pm list permissions <group> 查看权限   
-g: 以组形式组织;   
-f: 打印所有信息;   
-s: 简要信息;   
-d: 只列举危险权限;   
-u: 只列举用户可见的权限。



页: [1]
查看完整版本: 【安卓】shell pm命令详解