4. 应用管理

任务目标

本案例通过 ADB 命令实现两个核心操作:使用 pm list packages 列出设备上已安装的应用包名,以及使用 pm clear 清除指定应用的运行时数据(相当于应用设置中的“清除数据”)。你将掌握包管理命令的基本用法,并理解如何通过包名精确操作目标应用。

环境准备

  • 已安装 Android SDK Platform-Tools(包含 adb 和 pm 命令环境)
  • 开启设备的“开发者选项”和“USB 调试”,并已通过 adb devices 确认设备连接正常
  • 准备一个用于测试清除数据的目标应用(推荐使用系统自带的“计算器”或“设置”,包名见下文)

核心命令与实现

以下命令在 PC 终端(Windows CMD / macOS Linux Shell)中直接执行。所有 pm 命令均通过 adb shell 在设备端运行。

# 1. 列出所有已安装应用(含系统应用)
adb shell pm list packages

# 2. 仅列出第三方用户应用(过滤系统应用)
adb shell pm list packages -3

# 3. 按关键字过滤包名(例如搜索包含 "google" 的包)
adb shell pm list packages | grep google

# 4. 查看某个具体应用的包名(以计算器为例,不同厂商包名可能不同)
#    常见系统计算器包名:com.android.calculator2(原生Android)
#    小米:com.miui.calculator;华为:com.huawei.calculator
#    可通过第1步的完整列表查找实际包名

# 5. 清除指定应用的全部数据(以包名 com.android.calculator2 为例)
adb shell pm clear com.android.calculator2

# 6. 清除后验证:再次查看该应用的运行时数据目录是否已重置
#    正常输出为 "Success",表示清除成功

关键参数说明

  • pm list packages 默认列出所有应用包名,每行一个。
  • -3 参数仅显示用户安装的第三方应用;-s 仅显示系统应用;-e 仅显示已启用应用。
  • pm clear 需要 WRITE_SECURE_SETTINGS 或 root 权限吗?——不需要。普通调试连接下即可清除第三方应用数据;但清除部分系统应用(如设置)可能被限制,需 root 或使用 adb shell pm clear --user 0 指定用户。
  • pm clear 会删除应用的数据库、SharedPreferences、缓存及内部文件,但不会卸载应用,也不会清除外部 SD 卡上的公共文件。

验证方法与判定标准

  1. 列出验证:执行 adb shell pm list packages 后,终端输出大量包名列表,且包含你已知的应用(如 com.android.settings)。若使用 -3 参数,输出数量明显少于完整列表,且不包含系统核心包。
  2. 清除验证:选择一个测试应用(如计算器),先在其界面中产生一些数据(例如输入历史记录),然后执行 adb shell pm clear <包名>。终端返回 Success 即命令执行成功。
  3. 效果确认:重新打开该应用,观察其数据是否恢复为初始状态(如计算器历史记录清空、游戏进度重置)。若应用被强制停止,属正常现象,重新启动即可。
  4. 错误排查:若返回 Failed,可能原因包括:包名拼写错误、应用是设备管理员(Device Owner)、或系统应用受保护。使用 adb shell pm list packages | grep <关键字> 确认包名准确。

常见问题

  • pm clear 与卸载重装的区别:pm clear 保留应用安装包,仅删除数据;卸载重装会同时删除安装包和数据,且可能丢失应用权限设置。
  • 清除系统应用数据:部分系统应用(如桌面、设置)清除后可能导致异常,建议仅对第三方应用或明确可重置的系统应用(如计算器)操作。
  • 批量清除:可通过 for 循环结合 pm list packages -3 实现,但需谨慎操作,避免误清重要应用。

本案例已实现完整闭环:通过 pm list packages 定位包名,通过 pm clear 清除数据,并通过应用界面状态变化验证效果。无需编写任何代码文件,所有操作均在终端完成。