故障排除发布于: 阅读约 3 分钟

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_CERTIFICATESAPK 没有签名签名后再装,或构建已签名的 debug/release APK
INSTALL_FAILED_NO_MATCHING_ABIS原生代码对应的 CPU 架构不对使用为手机 ABI 构建的 APK
INSTALL_FAILED_OLDER_SDK手机的 Android 版本太旧使用 minSdkVersion 更低的版本
INSTALL_FAILED_TEST_ONLYAPK 标记为 testOnlyadb 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。