Команда adb install завершается ошибкой INSTALL_FAILED чаще всего из-за несовпадения подписи APK с уже установленной версией приложения или из-за недостатка прав на устройстве. Если вы вводите adb shell install и получаете отказ, первым делом проверьте, включена ли отладка по USB и подтверждён ли RSA-отпечаток компьютера на экране смартфона — без этого любая команда установки будет отклонена ещё до передачи файла.
В статье разберём, чем отличается adb install от adb shell pm install, какие флаги использовать в разных ситуациях, как расшифровать типичные коды ошибок и что делать, если установка через ADB невозможна в принципе. Материал ориентирован на Windows, Linux и macOS — синтаксис команд одинаков, отличается только способ запуска терминала.
Что такое ADB и зачем нужна установка через shell
ADB (Android Debug Bridge) — это консольная утилита из состава Android SDK Platform-Tools, которая позволяет управлять Android-устройством с компьютера: устанавливать приложения, передавать файлы, выполнять команды в shell-окружении смартфона. Установка APK через ADB востребована разработчиками, тестировщиками и пользователями, которым нужно поставить приложение, недоступное в магазине или собранное вручную.
Здесь важно различать две команды. adb install app.apk — клиентская команда, которая передаёт файл на устройство и вызывает менеджер пакетов. adb shell pm install — команда, выполняемая уже внутри shell-окружения устройства, она работает с файлом, который уже находится на смартфоне. Запрос «adb shell install» обычно означает именно второй вариант, хотя многие пользователи смешивают оба.
Подготовка: включение отладки по USB
Без активированной отладки по USB устройство не примет ни одну команду ADB. Порядок действий на большинстве смартфонов с чистым Android и популярными оболочками выглядит так:
- 📱 Откройте
Настройки → О телефонеи несколько раз нажмите на пунктНомер сборки, пока не появится сообщение о разблокировке режима разработчика. - 🔧 Перейдите в
Настройки → Система → Для разработчиков(путь может отличаться в зависимости от оболочки — MIUI, One UI, ColorOS размещают этот раздел по-разному). - 🔌 Включите переключатель
Отладка по USB. - 💻 Подключите смартфон кабелем к компьютеру и на экране устройства подтвердите запрос «Разрешить отладку по USB?», при желании отметив «Всегда разрешать с этого компьютера».
На компьютере потребуется пакет Platform-Tools — он распространяется Google отдельно от полной Android Studio и не требует установки: достаточно распаковать архив и запускать команды из его папки. На Windows для некоторых устройств дополнительно нужен драйвер ADB от производителя.
⚠️ Внимание: точное расположение пунктов «Номер сборки» и «Для разработчиков» зависит от оболочки и версии Android. Если не находите раздел, воспользуйтесь поиском по настройкам или официальной инструкцией для вашей модели.
Проверка подключения устройства
Перед установкой убедитесь, что компьютер видит смартфон. В терминале из папки Platform-Tools выполните:
adb devices
В ответ должна появиться строка с серийным номером устройства и статусом device. Если статус unauthorized — на смартфоне не подтверждён запрос на отладку: отсоедините кабель, подключите заново и разрешите доступ. Если список пуст, проверьте кабель (часть кабелей работает только на зарядку), порт USB и драйверы.
☑️ Готовность к установке APK через ADB
Установка APK: основные команды
Базовый вариант установки с компьютера выглядит так:
adb install app.apk
Если файл лежит в другой папке, укажите полный путь, например adb install C:\apk\app.apk. Успешный результат завершается строкой Success. Для обновления уже установленного приложения с сохранением его данных используется флаг -r:
adb install -r app.apk
Другой сценарий — файл уже скопирован на смартфон (например, через adb push в папку /sdcard/ или /data/local/tmp/). Тогда установка выполняется из shell-окружения устройства:
adb shell pm install /data/local/tmp/app.apk
Именно эту команду чаще всего имеют в виду под «adb shell install». Обратите внимание: путь указывается в файловой системе Android, а не компьютера, и у shell-пользователя должны быть права на чтение файла — поэтому надёжнее копировать APK в /data/local/tmp/, а не в произвольную папку.
Полезные флаги команды install
Менеджер пакетов поддерживает ряд флагов, меняющих поведение установки. Наиболее практичные собраны в таблице:
| Флаг | Назначение | Пример |
|---|---|---|
-r | Обновление с сохранением данных приложения | adb install -r app.apk |
-d | Разрешить «понижение» версии (не на всех версиях Android) | adb install -d app.apk |
-t | Разрешить установку тестовых пакетов (testOnly) | adb install -t app.apk |
-g | Сразу выдать все runtime-разрешения | adb shell pm install -g /data/local/tmp/app.apk |
-s | Установка с серийным номером при нескольких устройствах | adb -s SERIAL install app.apk |
Флаг -g особенно удобен при тестировании: приложение сразу получает разрешения на камеру, хранилище и прочее, без диалогов при первом запуске. Учтите, что набор доступных флагов зависит от версии Android — часть опций появляется или меняет поведение между релизами ОС.
Типичные ошибки и их расшифровка
Когда установка не проходит, команда возвращает код вида Failure [INSTALL_FAILED_...]. Разберём самые частые причины.
INSTALL_FAILED_UPDATE_INCOMPATIBLE — подпись нового APK не совпадает с подписью уже установленной версии. Такое случается, когда приложение было собрано другим ключом (например, debug-сборка поверх релизной). Решение — удалить старую версию (adb uninstall имя.пакета) и установить заново, но данные приложения при этом будут потеряны.
INSTALL_FAILED_VERSION_DOWNGRADE — попытка установить более старую версию поверх новой. Попробуйте флаг -d, но на части устройств понижение заблокировано системой, и тогда поможет только удаление текущей версии.
Другие распространённые ситуации:
- 📦 INSTALL_FAILED_INSUFFICIENT_STORAGE — не хватает свободного места; очистите память устройства и повторите попытку.
- 🔐 INSTALL_FAILED_USER_RESTRICTED — установка запрещена настройками оболочки; на некоторых прошивках (например, в MIUI) в разделе для разработчиков есть отдельный переключатель «Установка через USB», который нужно включить.
- 🧩 INSTALL_FAILED_INVALID_APK / PARSE_FAILED — файл повреждён, недокачан или это split-APK (набор из нескольких файлов .apks/.xapk), который требует установки всех частей одной командой
adb install-multiple. - 🚫 INSTALL_FAILED_OLDER_SDK — приложение собрано под более новую версию Android, чем стоит на устройстве; здесь поможет только APK, совместимый с вашей версией ОС.
⚠️ Внимание: команда adb uninstall удаляет приложение вместе со всеми его данными. Если в приложении есть важная информация без облачной синхронизации, сначала сделайте резервную копию доступными средствами.
Установка split-APK (app bundle)
Если приложение распространяется набором файлов (base.apk + config-файлы), обычная команда adb install выдаст ошибку. Используйте: adb install-multiple base.apk config1.apk config2.apk — все части перечисляются в одной команде.
Установка без кабеля: ADB по Wi-Fi
Начиная с Android 11, в систему встроена беспроводная отладка: в разделе для разработчиков включается пункт Беспроводная отладка, после чего устройство можно подключить по сети. Компьютер и смартфон должны находиться в одной Wi-Fi сети. Подключение выполняется командой вида adb pair IP:порт с вводом кода сопряжения с экрана телефона, затем adb connect IP:порт. После этого все команды, включая adb install, работают как по кабелю.
На более ранних версиях Android беспроводной режим тоже возможен через adb tcpip, но требует первичного подключения по USB. Точные названия пунктов меню и доступность функции зависят от версии системы и оболочки — сверяйтесь с настройками вашего устройства.
Когда ADB-установка не сработает в принципе
Есть ситуации, где ни один флаг не поможет. Системные приложения и обновления к ним нельзя заменить без root-доступа — менеджер пакетов отклонит такую установку. На корпоративных устройствах политика Device Admin может полностью запрещать установку из ADB. А на некоторых прошивках установка через USB требует входа в аккаунт производителя или SIM-карты в устройстве.
⚠️ Внимание: не пытайтесь обходить ограничения через root или патченые прошивки без понимания рисков — это может привести к потере гарантии, сбоям OTA-обновлений и уязвимостям безопасности. Сначала исчерпайте штатные варианты: проверку разрешений, удаление конфликтующей версии и установку совместимого APK.
Если ни один метод не сработал, проверьте сам APK на другом устройстве или эмуляторе — нередко проблема в файле, а не в смартфоне. Также полезно посмотреть подробный лог ошибки командой adb logcat во время установки: там видно, на каком этапе менеджер пакетов отклонил запрос.
FAQ: частые вопросы
Чем adb install отличается от adb shell pm install?
adb install передаёт файл с компьютера на устройство и устанавливает его. adb shell pm install выполняется внутри устройства и работает с файлом, который уже находится в памяти смартфона — его нужно предварительно скопировать, например через adb push.
Нужен ли root для установки APK через ADB?
Нет. Установка обычных пользовательских приложений через ADB работает на любых устройствах с включённой отладкой по USB. Root требуется только для операций с системными приложениями и защищёнными разделами.
Что означает ошибка INSTALL_FAILED_UPDATE_INCOMPATIBLE?
Уже установленная версия приложения подписана другим ключом, чем устанавливаемый APK. Система блокирует такое обновление. Решение — удалить текущую версию командой adb uninstall имя.пакета и поставить новую, но данные приложения будут потеряны.
Можно ли установить приложение на несколько устройств одновременно?
ADB работает с одним устройством за раз. При нескольких подключённых аппаратах указывайте целевое через adb -s SERIAL install app.apk, где SERIAL — идентификатор из вывода adb devices. Для массовой установки команды выполняются последовательно для каждого устройства.
Почему adb devices показывает пустой список?
Возможные причины: не включена отладка по USB, кабель поддерживает только зарядку, отсутствует драйвер ADB (актуально для Windows) или на смартфоне не подтверждён запрос на разрешение отладки. Проверьте каждый пункт по очереди, начиная с кабеля и настроек разработчика.