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}')
运行与验证方法
- 执行
adb devices,确认设备状态为device(而非unauthorized或offline)。 - 将测试 APK 放在当前目录,执行
adb install demo.apk。观察终端输出:出现Success表示安装成功。 - 在设备上手动打开应用确认可正常启动,或执行
adb shell pm list packages -3查看包名是否出现在列表中。 - 执行
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_SDK | APK 要求的 Android 版本高于设备系统 | 更换兼容的 APK 或使用更高系统版本的设备 |
Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES] | APK 未签名或签名损坏 | 重新签名 APK 或更换测试包 |
验证通过标准
adb install输出Success,且应用图标出现在设备桌面或应用列表中。adb uninstall输出Success,且应用从设备中完全移除。- 使用
adb shell pm list packages -3能观察到安装后包名出现、卸载后包名消失。