Решение проблемОпубликовано: 3 мин чтения

Ошибки adb install: коды INSTALL_FAILED и как их исправить

Что значит каждая ошибка adb install и как её исправить: INSTALL_FAILED_VERSION_DOWNGRADE, UPDATE_INCOMPATIBLE, NO_MATCHING_ABIS, USER_RESTRICTED и split APK.

adb install app.apk выводит либо Success, либо Failure [CODE: message]. Код точно говорит, что пошло не так. Ниже коды, которые встречаются чаще всего, что они значат и как исправить каждый.

Краткая таблица

КодЧто значитРешение
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Нативный код для другого типа процессораИспользуйте APK, собранный под ABI телефона
INSTALL_FAILED_OLDER_SDKAndroid на телефоне слишком старыйИспользуйте сборку с меньшим minSdkVersion
INSTALL_FAILED_TEST_ONLYAPK помечен как testOnlyadb install -t app.apk
INSTALL_FAILED_INSUFFICIENT_STORAGEНе хватает свободного местаОсвободите память
INSTALL_FAILED_USER_RESTRICTEDТелефон заблокировал установкуРазрешите установку через USB и подтвердите на телефоне
INSTALL_FAILED_MISSING_SPLITНе хватает части split APKУстанавливайте все части вместе

Частые ошибки подробнее

UPDATE_INCOMPATIBLE: подписи не совпадают

Приложение с тем же именем пакета уже установлено, но подписано другим ключом. Например, это версия из Play Маркета того приложения, которое вы тестируете. 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

Затем соберите или скачайте подходящий вариант либо универсальный APK.

USER_RESTRICTED

Телефон отказал в установке. На Xiaomi, Redmi и POCO включите «Установка через USB» в разделе «Для разработчиков» и нажмите «Установить» в окне подтверждения на телефоне. Подробнее в статье отладка по USB и настройки безопасности на Xiaomi. Установку также могут блокировать рабочие профили и родительский контроль.

Split APK и App Bundle

Приложения из Android App Bundle поставляются несколькими APK-файлами (базовый и split-части). Устанавливайте их одной командой:

adb install-multiple base.apk split_config.arm64_v8a.apk split_config.en.apk

Файл .aab напрямую установить нельзя. Сначала соберите из него APK с помощью bundletool.

Установку блокирует Play Защита

Иногда установка останавливается, потому что Google Play Защита предупреждает о неизвестном приложении. Посмотрите на экран телефона и выбирайте установку всё равно, только если доверяете этому APK.

Установка APK из браузера

Панель Install APK в ADBKit выполняет ту же установку на телефоне и показывает точный результат, включая код ошибки, понятными словами. Отметьте Replace existing app, чтобы обновить установленное приложение, это то же самое, что -r. Работает по USB или по Wi-Fi через агент ADBKit, а APK идёт прямо с вашего компьютера на телефон.

Подробнее об установке в статье как установить APK через ADB.