3. 安装与卸载应用

任务说明

本案例将使用 adb install 和 adb uninstall 命令完成 APK 的安装与卸载操作,并掌握安装失败时的常见排查方法。你需要准备一台已开启 USB 调试的 Android 设备或模拟器,以及一个用于测试的 APK 文件。

环境准备

  • Android SDK Platform-Tools(包含 adb),已加入系统 PATH
  • Android 设备或模拟器,已开启开发者选项中的 USB 调试
  • 测试用 APK 文件(如 demo.apk),可通过 adb install 安装

核心命令与完整代码

以下命令在终端(Windows CMD/PowerShell、macOS/Linux Shell)中直接执行。核心操作包括:连接设备、安装 APK、卸载应用、查看已安装包名。

# 1. 检查设备连接状态
adb devices

# 2. 安装 APK(普通安装,保留数据)
adb install demo.apk

# 3. 安装 APK(覆盖安装,保留数据和缓存)
adb install -r demo.apk

# 4. 安装 APK(允许降版本覆盖)
adb install -r -d demo.apk

# 5. 卸载应用(通过包名)
adb uninstall com.example.demo

# 6. 卸载应用但保留数据和缓存
adb uninstall -k com.example.demo

# 7. 查看设备上已安装的第三方应用包名
adb shell pm list packages -3

若需在代码中调用这些命令(如 Python 脚本),可使用 subprocess 模块,示例代码如下:

import subprocess

def run_adb_command(args):
    """执行 adb 命令并返回输出"""
    result = subprocess.run(
        ['adb'] + args,
        capture_output=True,
        text=True,
        encoding='utf-8'
    )
    return result.stdout.strip(), result.stderr.strip(), result.returncode

# 安装 APK
stdout, stderr, code = run_adb_command(['install', 'demo.apk'])
if code == 0 and 'Success' in stdout:
    print('安装成功')
else:
    print(f'安装失败: {stderr or stdout}')

# 卸载应用
stdout, stderr, code = run_adb_command(['uninstall', 'com.example.demo'])
if code == 0 and 'Success' in stdout:
    print('卸载成功')
else:
    print(f'卸载失败: {stderr or stdout}')

运行与验证方法

  1. 执行 adb devices,确认设备状态为 device(而非 unauthorized 或 offline)。
  2. 将测试 APK 放在当前目录,执行 adb install demo.apk。观察终端输出:出现 Success 表示安装成功。
  3. 在设备上手动打开应用确认可正常启动,或执行 adb shell pm list packages -3 查看包名是否出现在列表中。
  4. 执行 adb uninstall com.example.demo,输出 Success 后,再次执行 adb shell pm list packages -3 确认包名已消失。

安装失败常见问题与处理

错误提示原因解决方案
INSTALL_FAILED_UPDATE_INCOMPATIBLE已安装签名不同的同包名应用先卸载旧应用,或使用 adb install -r 覆盖(需签名一致)
INSTALL_FAILED_VERSION_DOWNGRADE新 APK 版本号低于已安装版本使用 adb install -r -d 允许降级安装
INSTALL_FAILED_INSUFFICIENT_STORAGE设备存储空间不足清理设备存储后重试
INSTALL_FAILED_OLDER_SDKAPK 要求的 Android 版本高于设备系统更换兼容的 APK 或使用更高系统版本的设备
Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]APK 未签名或签名损坏重新签名 APK 或更换测试包

验证通过标准

  • adb install 输出 Success,且应用图标出现在设备桌面或应用列表中。
  • adb uninstall 输出 Success,且应用从设备中完全移除。
  • 使用 adb shell pm list packages -3 能观察到安装后包名出现、卸载后包名消失。