Erros do adb install: códigos INSTALL_FAILED explicados
O que significa cada erro do adb install e como resolver, de INSTALL_FAILED_VERSION_DOWNGRADE e UPDATE_INCOMPATIBLE a NO_MATCHING_ABIS, USER_RESTRICTED e split APKs.
O adb install app.apk mostra Success ou um Failure [CÓDIGO: mensagem]. O código diz exatamente o que deu errado. Abaixo estão os códigos mais comuns, o que significam e como resolver cada um.
Tabela rápida
| Código | Significado | Solução |
|---|---|---|
INSTALL_FAILED_ALREADY_EXISTS | O app já está instalado | adb install -r app.apk |
INSTALL_FAILED_VERSION_DOWNGRADE | Version code menor que o do app instalado | adb install -r -d app.apk, ou desinstale antes |
INSTALL_FAILED_UPDATE_INCOMPATIBLE | Mesmo pacote, chave de assinatura diferente | Desinstale o app instalado antes |
INSTALL_PARSE_FAILED_NO_CERTIFICATES | O APK não está assinado | Assine o APK, ou gere um APK de debug/release assinado |
INSTALL_FAILED_NO_MATCHING_ABIS | Código nativo para o tipo de CPU errado | Use um APK feito para a ABI do celular |
INSTALL_FAILED_OLDER_SDK | O Android do celular é antigo demais | Use uma build com minSdkVersion menor |
INSTALL_FAILED_TEST_ONLY | APK marcado como testOnly | adb install -t app.apk |
INSTALL_FAILED_INSUFFICIENT_STORAGE | Falta espaço livre | Libere armazenamento |
INSTALL_FAILED_USER_RESTRICTED | O celular bloqueou a instalação | Permita instalar via USB e confirme no celular |
INSTALL_FAILED_MISSING_SPLIT | Falta uma parte de um split APK | Instale todas as partes juntas |
Os mais comuns em detalhe
UPDATE_INCOMPATIBLE: as assinaturas não batem
Já existe um app com o mesmo nome de pacote instalado, mas assinado com outra chave, por exemplo a versão da Play Store do app que você está testando. O Android não substitui esse app, para proteger os dados dele:
adb uninstall com.example.app
adb install app.apkDesinstalar apaga os dados desse app no celular.
VERSION_DOWNGRADE
Você está instalando uma build mais antiga por cima de uma mais nova. Permita com -d:
adb install -r -d app.apkNas versões recentes do Android isso só funciona com builds depuráveis. Caso contrário, desinstale antes.
NO_MATCHING_ABIS
O APK traz bibliotecas nativas para um processador que o celular não usa, por exemplo uma build só x86_64 num celular ARM, ou uma build só arm64-v8a num celular ou TV com Android 32 bits. Confira o que o celular suporta:
adb shell getprop ro.product.cpu.abilistDepois gere ou baixe a variante correspondente, ou um APK universal.
USER_RESTRICTED
O celular recusou a instalação. Nos Xiaomi, Redmi e POCO, ative Instalar via USB em Opções do desenvolvedor e toque em Instalar na confirmação que aparece no celular. Detalhes em Depuração USB e configurações de segurança na Xiaomi. Perfis de trabalho e controle parental também podem bloquear instalações.
Split APKs e app bundles
Apps gerados a partir de Android App Bundles vêm em vários arquivos APK (uma base e os splits). Instale todos de uma vez:
adb install-multiple base.apk split_config.arm64_v8a.apk split_config.en.apkUm arquivo .aab não pode ser instalado direto. Gere os APKs a partir dele com o bundletool antes.
O Play Protect bloqueia a instalação
Às vezes a instalação para porque o Google Play Protect alerta sobre um app desconhecido. Olhe a tela do celular e escolha instalar mesmo assim só se você confia no APK.
Instalando APKs pelo navegador
O painel Install APK do ADBKit faz a mesma instalação no celular e mostra o resultado exato, incluindo o código de falha explicado em palavras simples. Marque Replace existing app para atualizar um app já instalado, o que equivale ao -r. Funciona por USB ou pelo Wi-Fi com o agente do ADBKit, e o APK vai direto do seu computador para o celular.
Mais sobre instalação em como instalar um APK com ADB.