adb install 安装失败:INSTALL_FAILED 错误码详解
每个 adb install 报错的含义和解决方法,涵盖 INSTALL_FAILED_VERSION_DOWNGRADE、UPDATE_INCOMPATIBLE、NO_MATCHING_ABIS、USER_RESTRICTED 和拆分 APK。
adb install app.apk 的结果要么是 Success,要么是 Failure [错误码: 说明]。错误码会准确告诉你哪里出了问题。下面是最常遇到的错误码、它们的含义以及对应的解决方法。
速查表
| 错误码 | 含义 | 解决方法 |
|---|---|---|
INSTALL_FAILED_ALREADY_EXISTS | 应用已经安装 | adb install -r app.apk |
INSTALL_FAILED_VERSION_DOWNGRADE | 版本号比已安装的低 | adb install -r -d app.apk,或先卸载 |
INSTALL_FAILED_UPDATE_INCOMPATIBLE | 包名相同,签名不同 | 先卸载已安装的应用 |
INSTALL_PARSE_FAILED_NO_CERTIFICATES | APK 没有签名 | 签名后再装,或构建已签名的 debug/release APK |
INSTALL_FAILED_NO_MATCHING_ABIS | 原生代码对应的 CPU 架构不对 | 使用为手机 ABI 构建的 APK |
INSTALL_FAILED_OLDER_SDK | 手机的 Android 版本太旧 | 使用 minSdkVersion 更低的版本 |
INSTALL_FAILED_TEST_ONLY | APK 标记为 testOnly | adb install -t app.apk |
INSTALL_FAILED_INSUFFICIENT_STORAGE | 存储空间不足 | 清理存储空间 |
INSTALL_FAILED_USER_RESTRICTED | 手机阻止了安装 | 允许通过 USB 安装,并在手机上确认 |
INSTALL_FAILED_MISSING_SPLIT | 拆分 APK 缺少部分文件 | 把所有部分一起安装 |
常见错误详解
UPDATE_INCOMPATIBLE:签名不一致
手机上已经装了包名相同的应用,但它用的是另一个签名密钥,比如你正在测试的应用的应用商店版本。为了保护数据,Android 不会直接替换:
adb uninstall com.example.app
adb install app.apk卸载会删除该应用在手机上的数据。
VERSION_DOWNGRADE
你在用旧版本覆盖新版本。加上 -d 允许降级:
adb install -r -d app.apk在较新的 Android 版本上,这只对可调试 (debuggable) 的构建有效。否则请先卸载。
NO_MATCHING_ABIS
APK 包含的原生库对应的处理器和手机不一致,比如只有 x86_64 的构建装在 ARM 手机上,或者只有 arm64-v8a 的构建装在运行 32 位 Android 的手机或电视上。查看手机支持的架构:
adb shell getprop ro.product.cpu.abilist然后构建或下载对应的版本,或者使用通用 (universal) APK。
USER_RESTRICTED
手机拒绝了安装。在 小米、红米和 POCO 手机上,在开发者选项中打开 USB 安装 (Install via USB),并在手机弹出的确认框中点击 继续安装。详见 小米 USB 调试(安全设置)与 USB 安装。工作资料和家长控制也可能阻止安装。
拆分 APK 和 App Bundle
来自 Android App Bundle 的应用由多个 APK 文件组成(一个 base 和若干 split)。一次性全部安装:
adb install-multiple base.apk split_config.arm64_v8a.apk split_config.en.apk.aab 文件不能直接安装,需要先用 bundletool 从中生成 APK。
Play 保护机制拦截安装
有时安装会因为 Google Play 保护机制 (Play Protect) 对未知应用发出警告而中止。查看手机屏幕,只有在你信任这个 APK 时才选择继续安装。
在浏览器里安装 APK
ADBKit 的 Install APK 面板会在手机上执行同样的安装,并显示准确的结果,包括用通俗语言解释的错误码。勾选 Replace existing app 可以更新已安装的应用,效果等同于 -r。它支持 USB 连接,也支持借助 ADBKit 代理程序通过 Wi-Fi 连接,APK 直接从你的电脑传到手机。
更多安装方法见 如何用 ADB 安装 APK。