Ошибки 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_CERTIFICATES | APK не подписан | Подпишите его или соберите подписанный debug/release APK |
INSTALL_FAILED_NO_MATCHING_ABIS | Нативный код для другого типа процессора | Используйте APK, собранный под ABI телефона |
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 | Не хватает части 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.