1.pm介绍

1.pm的定义

pm 为“包管理(package manager)”的简称。

2.pm的作用

pm的作用 作用点

- 执行应用安装

- 查询—应用包的信息

- 查询—系统权限

- 控制应用

2.pm命令应用

  • 【查询】包名
  • 【查询】授权、撤销授权
  • 授权、撤销授权
  • 其他信息
  • 安装与卸载
  • 控制命令

    1.【查询】包名【pm list packages】

    格式 adb shell pm list packages [options] [Filter]

    说明 **(用于) 打印所有已安装应用的包名。

    • 若设置“文件过滤规则(即 options+filter)”—> 只显示包含过滤文字的内容。 | 参数(options) | 描述 | 命令 | | :—-: | :—-: | :—-: | | 不带参数 | 打印显示设备中所有安装应用的包名 |
      - adb shell pm list packages # 显示设备中所有安装的应用的包名
      - adb shell pm list packages phone # 显示设备中”phone”安装的应用的包名
      | | -f | 显示每个包的文件位置 |
      - adb shell pm list packages -f # 显示“每个包”的文件位置
      - adb shell pm list packages -f ** _phone _ # 显示“phone”的文件位置
      | | -d | 显示【
      禁用】APP的包名 |
      - adb shell
      pm list packages -d # 显示所有“禁用app”的包名
      - adb shell
      pm list packages -d ** nfc # 显示“禁用app—nfc”的包名
      | | -e | 显示【可用】APP的包名 |
      - adb shell pm list packages -e # 显示所有“可用app”的包名
      - adb shell pm list packages -e ** _xueqiu_# 显示“可用app—xueqiu”的包名
      | | -s | 显示【
      系统】APP的包名 |
      - adb shell
      pm list packages -e # 显示所有“可用app”的包名
      - adb shell
      pm list packages -e ** xueqiu# 显示“可用app—xueqiu”的包名
      | | -3 | 显示【第3方】APP的包名 |
      - adb shell pm list packages -3 # 显示所有“第三方app”的包名
      - adb shell pm list packages -e ** _xueqiu_# 显示“第三方app—xueqiu”的包名
      | | -i | 查看
      应用的安装者 |
      - adb shell
      pm list packages -i # 显示所有应用的安装者
      - adb shell
      pm list packages -3 -i ** xueqiu# 显示“第三方app—xueqiu”的安装者
      |

扩展 等价关系

  1. # 命令1 ===(等价于) 命令2
  2. #命令1
  3. adb shell pm list packages | findstr xueqiu # 查询“雪球”的包名
  4. #命令2
  5. adb shell pm list packages xueqiu # 查询“雪球”的包名

2.【查询】权限信息【pm list permissions/permission-group】

说明 **(用于) **打印“权限/权限组”。

分类 格式(简要)
权限 adb shell pm list permissons[options] [group] ** # 打印权限**
权限组 adb shell pm list** permisson-groups **# 打印所有已知的权限组

1. pm list permissons 权限

格式 adb shell pm list permissons[options] [group] ** # 打印权限
image.png**

参数(options) 描述 命令
-g 按组显示
- adb shell pm list permission -g # 按组显示权限信息
-f 显示所有的权限信息
- adb shell pm list permission -f # 显示所有的权限信息
-s 简短的摘要
- adb shell pm list permission -s # 简短的摘要
-d 只显示“危险权限”
- adb shell pm list permission -d # 显示“危险的权限”
- adb shell pm list permission -g -d # 【按组】显示“危险的权限”
-u
- 显示只有权限的用户的权限信息
- 用户自定义权限

- adb shell pm list permission -u # 用户自定义权限

2. pm list permisson-groups 权限组

格式 adb shell pm list permisson-groups **# 打印所有已知的权限组
image.png**

3.授权、撤销授权【pm grant/revoke】

说明 **(用于) 对指定APP进行—> 授权、撤销授权**

分类 格式(简要)
授权 adb shell pm grant **包名 权限名**
取消授权 adb shell pm revoke ** 包名 **权限名
【附件说明】查看APP的权限信息 adb shell dumpsys pacakage ** **包名

1.grant 授权

格式

  • 【授权】adb shell pm grant 包名(com.xueqiu.android)权限名(**android.permission.READ_CALENDAR**)
    • 【step1】查看APP的权限—> adb shell dumpsys pacakage com.xueqiu.android > f:/xueqiu.txt

image.png

  1. - step2】对“**android.permission.READ_CALENDAR**”进行grant授权
  1. adb shell pm grant com.xueqiu.android android.permission.READ_CALENDAR # 授权操作
  1. - step3】查看授权是否成功【# adb shell dumpsys pacakage com.xueqiu.android > f:/xueqiu_grant.txt 】<br />

image.png

2.revoke 取消授权

格式

  • 【授权】adb shell pm revoke 包名(com.xueqiu.android)权限名(**android.permission.READ_CALENDAR**)
    • 【step1】查看APP的权限—> adb shell dumpsys pacakage com.xueqiu.android > f:/xueqiu2.txt

image.png

  1. - step2】对“**android.permission.READ_CALENDAR**”进行revoke撤销授权
  1. adb shell pm revoke com.xueqiu.android android.permission.READ_CALENDAR # 撤销授权操作
  1. - step3】查看授权是否成功【# adb shell dumpsys pacakage com.xueqiu.android > f:/xueqiu_revoke.txt 】<br />

image.png

4.【查询】其他信息

1.测试包与APK路径查询

分类 说明 格式(简要)
instrumentation 列出测试包(建议真机验证)
- adb shell pm list instrumentation # 列出所有的instrumentation测试包
- 子参数 adb shell pm list instrumentation -f # 列出apk的位置
- 子参数 adb shell pm list instrumentation 包名 # 列出某个apk的测试包
path 查看apk的路径 adb shell pm path** **包名 # 打印指定APP的apk路径
  • pm list instrumentation

image.png

  • pm path** **

image.png

2.【查询】系统功能与支持库

分类 说明 格式(简要)
features
- 打印系统所有功能
- 列出所有硬件相关信息
adb shell pm list features
libraries
- 打印当前设备所支持的库
adb shell pm list libraries

image.png

3.【查询】包的系统状态信息

格式 adb shell pm dump 包名
image.png

5.安装与卸载

1.安装

格式 pm install 参数 **全路径/xxx.apk **

参数 描述 命令 adb install 对照
-l 【锁定】APP
- pm install -l 全路径/xxx.apk
-l : 标识为受限(limit)应用
-r
常用
重新替换】安装APP(保留应用数据)
- pm install -r 全路径/xxx.apk
-r: 替换(replace)已存在的应用
-t 测试包
- pm install -t 全路径/xxx.apk
-t: 安装测试包(test)
-i 指定安装包的包名
- pm install -i com.xq.android 全路径/xueqiu.apk [ /data/local/tmp/com.xueqiu.android_12.36.1_313.apk]
不支持
-s 安装到SDcard
- pm install -s 全路径/xxx.apk
-s: 安装到SD卡
-f 安装到系统内置存储
- pm install -f 全路径/xxx.apk
不支持
-d 允许降级安装
- pm install -d 全路径/xxx.apk
-d: 允许降级(demote)安装
-g
常用
授权“程序清单”中的所有权限
- pm install -g 全路径/xxx.apk
不支持
adb install pm install 的区别
adb install 相对路径apk
pm install 绝对(全)路径apk

2.卸载

格式 pm uninstall 参数 **包名 **

参数 描述 命令
不带 卸载APP及数据、缓存
- pm uninstall **包名 **
-k 卸载APP及保留数据、缓存
- pm uninstall -k 包名

6.控制命令

  • 清除应用数据
  • 禁用与启用应用
  • 隐藏与恢复应用
  • 应用默认安装位置

    1.清除应用数据

    | 参数 | 描述 | 命令 | | :—-: | :—-: | :—-: | | clear 包名 | 清除应用的数据 |
    - adb shell pm clear **包名 **
    |

image.png

2.禁用与启用APP

说明 此命令需在root下才能生效

  • 【(root)系统APP】—-> 只能【停用】+【强行停止】
  • 【(root)第3方APP】—-> 只能【卸载】+【强行停止】 | 参数 | 描述 | 命令 | | :—-: | :—-: | :—-: | | enable 包名 | 【启用】APP |
    - adb root
    - adb shell pm enable **包名
    | | disable 包名 | 【禁用】APP—->会在“桌面消失” |
    - adb root
    - adb shell pm
    disable **包名
    |

image.png

3.隐藏与恢复应用

参数 描述 命令
hide 包名 【隐藏】APP
- adb shell pm hide **包名 **
unhide 包名 【恢复】APP—->会在“桌面消失”
- adb shell pm unhide **包名 **

image.png

4.应用默认安装位置

参数 描述 命令
set-install-location 安装位置(输入数字) 更改默认的安装位置:
(输入)数字项
0 :自动—让系统决定最好的位置
1:内部存储—安装在内部设备上
2:外部存储—安装在外部媒体

- adb shell pm set-install-location **数字**
get-install-location 返回当前的安装位置:
(返回)数字项
0 :自动—让系统决定最好的位置
1:内部存储—安装在内部设备上
2:外部存储—安装在外部媒体

- adb shell pm get-install-location

image.png