Команда adb install app.apk завершается ошибкой «device not found», а приложение так и не попадает на смартфон — это самый частый сценарий, с которым сталкиваются при первой попытке управлять APK через ADB shell. Причина почти всегда одна из трёх: не включена отладка по USB, не установлен драйвер на ПК или не подтверждён запрос на авторизацию на экране телефона. Разберёмся, как правильно работать с APK-файлами через Android Debug Bridge, от подготовки устройства до решения типичных сбоев.
ADB — это официальный инструмент Google из состава Android SDK Platform Tools, который позволяет с компьютера устанавливать и удалять приложения, просматривать список пакетов, очищать данные и выполнять множество других операций без root-прав. Для большинства задач с APK достаточно базовых команд, которые мы рассмотрим ниже.
Подготовка: что нужно перед работой с adb shell apk
Прежде чем выполнять команды, необходимо подготовить и смартфон, и компьютер. Без этого этапа любая команда вернёт ошибку или просто не увидит устройство.
- 🔧 Включите «Параметры разработчика» — откройте «Настройки → О телефоне» и несколько раз нажмите на «Номер сборки», пока не появится уведомление о разблокировке режима разработчика.
- 🔌 Активируйте отладку по USB — в разделе «Для разработчиков» найдите пункт
Отладка по USBи включите его. - 💾 Скачайте Platform Tools — архив с официального сайта Android Developers, распакуйте в удобную папку и откройте в ней терминал или командную строку.
- 🔑 Подтвердите авторизацию — при первом подключении на экране смартфона появится запрос «Разрешить отладку по USB?», нажмите «ОК» и при желании отметьте «Всегда разрешать с этого компьютера».
Проверить, видит ли компьютер устройство, можно командой adb devices. Если в списке напротив серийного номера стоит статус device — всё готово к работе. Статус unauthorized означает, что вы не подтвердили запрос на смартфоне, а пустой список — проблему с кабелем или драйвером.
⚠️ Внимание: на некоторых прошивках (например, оболочках китайских производителей) помимо отладки по USB требуется отдельно включить пунктУстановка через USBв настройках разработчика. Без этого командаadb installбудет отклоняться системой. Наличие такого пункта зависит от модели — сверьтесь с меню вашего устройства.
Установка APK через ADB
Базовая команда установки выглядит так:
adb install путь\к\файлу\app.apk
Путь к файлу можно не вводить вручную — достаточно перетащить APK-файл мышью в окно терминала после команды. Если установка прошла успешно, в ответ вы получите строку Success.
Для особых случаев предусмотрены дополнительные флаги. Команда adb install -r app.apk переустанавливает приложение с сохранением данных, а adb install -d app.apk позволяет установить более старую версию поверх новой (даунгрейд) — правда, поддержка этого флага зависит от версии Android и конкретного приложения. Вам может понадобиться и adb install-multiple для split-APK, когда приложение распространяется несколькими файлами (base + конфигурации).
Просмотр установленных пакетов через adb shell
Чтобы узнать, какие приложения установлены на устройстве, используется команда adb shell pm list packages. Она выведет полный список имён пакетов в формате package:com.example.app. Именно имя пакета, а не название приложения из меню, нужно для большинства последующих операций.
Список можно фильтровать. Например, adb shell pm list packages -3 покажет только сторонние приложения (установленные пользователем), а adb shell pm list packages -s — только системные. Чтобы найти конкретное приложение по части имени, добавьте его в конец команды: adb shell pm list packages chrome.
Узнать, откуда установлен конкретный пакет и где лежит его APK, поможет команда:
adb shell pm path com.example.app
Как вытащить APK установленного приложения на ПК
Сначала выполните adb shell pm path имя.пакета — получите путь вида /data/app/.../base.apk. Затем скопируйте файл командой adb pull /data/app/.../base.apk — APK сохранится в текущую папку на компьютере. Для split-приложений придётся вытягивать все файлы по отдельности.
Удаление и отключение приложений через ADB
Удаление пользовательского приложения выполняется командой:
adb uninstall com.example.app
С системными приложениями всё сложнее: без root-прав полностью удалить их нельзя, но можно удалить для текущего пользователя — adb shell pm uninstall -k --user 0 com.example.app. Флаг -k сохраняет данные, --user 0 указывает основного пользователя. После сброса настроек такие приложения вернутся, поскольку из системного раздела они физически не стираются.
Более мягкая альтернатива — отключение пакета: adb shell pm disable-user --user 0 com.example.app. Приложение скроется и перестанет работать, но его легко вернуть командой adb shell pm enable com.example.app.
⚠️ Внимание: удаление или отключение системных пакетов может нарушить работу устройства — некоторые приложения связаны с функциями прошивки. Перед удалением незнакомого пакета проверьте его назначение по имени и не трогайте компоненты, в роли которых не уверены. Критические системные пакеты лучше отключать, а не удалять — так изменение всегда обратимо.
Типичные ошибки при работе с adb shell apk и их решения
Большинство сбоев при установке и удалении APK имеют понятные причины. Сводим основные в таблицу:
| Ошибка | Вероятная причина | Что делать |
|---|---|---|
| device not found | Нет отладки по USB или драйвера | Проверить adb devices, переустановить драйвер, сменить кабель |
| INSTALL_FAILED_UPDATE_INCOMPATIBLE | Конфликт подписей APK | Удалить старую версию приложения и установить заново |
| INSTALL_FAILED_VERSION_DOWNGRADE | Попытка поставить старую версию поверх новой | Удалить приложение или использовать флаг -d, если поддерживается |
| INSTALL_FAILED_INSUFFICIENT_STORAGE | Не хватает памяти на устройстве | Освободить место и повторить установку |
| Failure [DELETE_FAILED_INTERNAL_ERROR] | Попытка удалить системный пакет обычной командой | Использовать pm uninstall -k --user 0 |
Если устройство вообще не определяется, начните с простого: другой USB-порт (лучше напрямую, без хаба), другой кабель — многие дешёвые кабели передают только питание, но не данные. На Windows дополнительно проверьте «Диспетчер устройств»: смартфон не должен отображаться с жёлтым значком ошибки драйвера.
☑️ Чек-лист перед установкой APK через ADB
Дополнительные полезные команды для работы с приложениями
Помимо установки и удаления, Package Manager через adb shell умеет многое другое. Очистка данных приложения без переустановки: adb shell pm clear com.example.app — полезно, когда программа глючит и нужен «чистый» запуск. Запуск приложения из терминала: adb shell monkey -p com.example.app 1 или через am start с указанием активности.
Получить подробную информацию о пакете — версию, разрешения, пути — можно командой adb shell dumpsys package com.example.app. Вывод объёмный, но именно там видно, какие разрешения реально выданы приложению.
Безопасность при установке APK через ADB
Установка через ADB обходит стандартный диалог установки Android, поэтому ответственность за источник файла полностью на вас. Скачивайте APK только с официальных сайтов разработчиков или известных репозиториев, а при сомнениях проверяйте файл антивирусом или сервисами анализа перед установкой.
После завершения работы имеет смысл отключить отладку по USB — особенно если устройством пользуются другие люди или оно часто подключается к чужим компьютерам. Это закрывает потенциальный канал доступа к данным.
Часто задаваемые вопросы
Нужны ли root-права для работы с APK через ADB?
Нет. Установка, удаление пользовательских приложений, отключение и удаление системных пакетов «для пользователя 0», очистка данных — всё это работает без root. Полное стирание системных приложений из раздела /system требует root, но на практике это почти никогда не нужно.
Почему adb install выдаёт Success, но приложения нет в меню?
Возможные причины: установлен пакет без launcher-активности (например, сервис или библиотека), либо приложение установлено для другого пользователя/рабочего профиля. Проверьте наличие пакета командой adb shell pm list packages.
Можно ли установить APK через ADB по Wi-Fi без кабеля?
Да, если устройство и ПК в одной сети. На современных версиях Android есть «Беспроводная отладка» в настройках разработчика: включите её и подключитесь командой adb pair с кодом сопряжения, затем adb connect. На старых версиях требовалось сначала активировать TCP-режим по кабелю командой adb tcpip 5555. Точные пункты меню зависят от версии Android и оболочки.
Как вернуть системное приложение, удалённое через pm uninstall --user 0?
Выполните команду adb shell cmd package install-existing com.example.app — пакет снова станет доступен текущему пользователю. Также помогает сброс настроек устройства, но это крайняя мера.
Чем adb install отличается от обычной установки APK с телефона?
Результат тот же — приложение устанавливается в систему. Разница в удобстве автоматизации: через ADB можно ставить десятки APK скриптом, указывать флаги переустановки и даунгрейда, а также ставить приложения на устройства без файлового менеджера или с неработающим экраном (если отладка была включена заранее).