一、Pm命令
命令格式: pm
命令列表:
命令 功能 实现方法
list packages 列举app包信息 PMS.getInstalledPackages
install [options] 安装应用 PMS.installPackageAsUser
uninstall [options] 卸载应用 IPackageInstaller.uninstall
enable <包名或组件名> enable PMS.setEnabledSetting
disable <包名或组件名> disable PMS.setEnabledSetting
hide 隐藏应用 PMS.setApplicationHiddenSettingAsUser
unhide 显示应用 PMS.setApplicationHiddenSettingAsUser
get-install-location 获取安装位置 PMS.getInstallLocation
set-install-location 设置安装位置 PMS.setInstallLocation
path 查看App路径 PMS.getPackageInfo
clear 清空App数据 AMS.clearApplicationUserData
get-max-users 最大用户数 UserManager.getMaxSupportedUsers
force-dex-opt dex优化 PMS.forceDexOpt
dump dump信息 AM.dumpPackageStateStatic
trim-caches <目标size> 紧缩cache目标大小 PMS.freeStorageAndNotify
pm命令实的实现方式在Pm.java,最后大多数都是调用PackageManagerService相应的方法来完成的。disbale之后,在桌面和应用程序列表里边都看到不该app。
二、详细参数
2.1 list packages
查看所有的package list packages [options]
其中[options]参数:
-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为空时,则默认显示所有满足条件的应用。 比如,查看包名带google字段的包名 pm list packages google
2.2 pm install
安装应用 pm install [options]
其中[options]参数:
-r: 覆盖安装已存在Apk,并保持原有数据;
-d: 运行安装低版本Apk;
-t: 运行安装测试Apk
-i : 指定Apk的安装器;
-s: 安装apk到共享快存储,比如sdcard;
-f: 安装apk到内部系统内存;
-l: 安装过程,持有转发锁
-g: 准许Apk manifest中的所有权限;
参数: 该参数是必须的,是指需要安装的apk所在的路径。
2.3 其他参数
pm list users //查看当前手机用户
pm list libraries //查看当前设备所支持的库
pm list features //查看系统所有的features
pm list instrumentation //所有测试包的信息
pm list permission-groups //查看所有的权限组
pm list permissions [options] 查看权限
以上所有命令都在adb shell 之后运行
或者在命令前面添加adb shell 也可以
例如:adb shell pm list packages