用途:从宿主机管理 Android 应用生命周期。adb install 负责推送 APK,pm 是设备端 PackageManager 前端,用于列出、查询路径、清除数据、启用/禁用、授予权限。测试脚手架中最常见的隐蔽 bug 是用 am force-stop 在用例间“重置”应用——它只杀进程,磁盘上的 SharedPreferences、Room 数据库和文件仍在;等价于全新安装的做法是 pm clear。
何时使用:从宿主机安装 APK 或在每次测试前推送调试包;询问如何重置应用状态或发现上一条用例残留数据;遇到 INSTALL_FAILED_VERSION_DOWNGRADE、INSTALL_FAILED_USER_RESTRICTED 或签名不匹配;想用 -g 一次授予全部运行时权限,或在安装后单个授予/撤销权限;只想列出第三方包、找 APK 路径或导出 Baseline Profile。
主要能力与用法:安装旗标中 -r 表示重装并保留数据(包已存在时必加),-d 允许版本降级,-t 允许安装测试包(所有 Gradle androidTest 包都需要),-g 授予 manifest 中全部权限,另有 --user、--fastdeploy、--incremental 等。拆分 APK 需用 adb install-multiple,例如 adb install-multiple -r -t -g base-master.apk base-arm64_v8a.apk base-xxhdpi.apk。用例间重置用 adb shell pm clear com.example.app;列出与检查用 pm list packages(-3 第三方、-s 系统、-d 禁用、-e 启用、-u 含已卸载、-f 显示文件)、pm path;权限操作用 pm grant / pm revoke / pm reset-permissions;可 pm disable / pm enable 整个包或特定组件;卸载用 pm uninstall,-k 保留数据,--versionCode 实现幂等卸载。
限制:运行时权限需 API 23+。版本降级在正式版上仅限可调试包。Baseline Profile 导出需 root 访问才能取到文件名,否则改用 Macrobenchmark。Platform Tools 23+ 采用 ssh 风格引用,含空格或 shell 元字符的参数需双重引号。运行插桩测试、选择设备等任务需参考对应兄弟技能,本技能不涵盖。须用 pm clear 重置状态,不可用 am force-stop 代替;不可用 grep 启发式筛包。验证方式包括安装返回 Success、pm path 打印路径、pm clear 后仅剩新建缓存目录等。