
СОДЕРЖАНИЕ
1. Установка и настройка ADB: фундамент для эффективной работы
2. Основные команды ADB: первое взаимодействие с устройством
3. Манипуляции с файлами: переносы и управление данными
4. Управление приложениями: установка, удаление и диагностика
5. Запуск Activity и Service
6. Системные команды: контроль над ОС Android
7. Сетевые возможности ADB: отлаживаем подключения
8. Продвинутые техники: скриншоты, запись экрана, ввод и SQLite
9. ADB sideload: обновление прошивок и систем
10. Логирование и мониторинг: все о `logcat`, `top`, `ps`
11. Безопасность и ответственность: этика и практические советы
12. FAQ: Ответы на животрепещущие вопросы по ADB
13. Контрольный список: ваша дорожная карта к mastery ADB
14. Полезные ресурсы для дальнейшего изучения
Введение: Зачем вам полный арсенал ADB команд в 2026 году
В 2026 году Android продолжает доминировать на рынке мобильных устройств, а вместе с ним растут и требования к инструментам разработки, тестирования и анализа. Android Debug Bridge (ADB) — это не просто утилита, это неотъемлемый инструмент для любого, кто серьезно занимается экосистемой Android: от инди-разработчиков, создающих свои первые приложения, до крупных компаний, проводящих глубокий аудит безопасности своих продуктов. Знание полного спектра ADB команд позволяет не только значительно ускорить рабочие процессы, но и решать задачи, недоступные другими способами.
Представьте ситуацию: ваше приложение ведет себя непредсказуемо, система зависла, или вам нужно собрать детальную информацию о производительности устройства перед релизом. В такие моменты знание нужной ADB команды может быть решающим. Именно здесь приходит на помощь исчерпывающий справочник, который содержит не только базовые, но и редкие, мощные команды, актуальные в 2026 году. Устаревшие гайды могут ввести в заблуждение, так как Android и ADB постоянно эволюционируют, добавляя новые функции и меняя функционал существующих команд.
Этот полный гид по ADB командам создан с учетом всех современных реалий. Мы затронем установку и настройку, основные операции с файлами и приложениями, глубокое взаимодействие с системой, сетевую диагностику, а также продвинутые техники, которые используют опытные инженеры. Особое внимание уделено практическому применению: вы найдете примеры команд, пошаговые инструкции и решение типичных проблем. Цель — вооружить вас полным арсеналом для эффективной работы с Android Debug Bridge, делая вас более компетентным и продуктивным специалистом в 2026 году.
Вам больше не придется тратить часы на поиск нужной команды или гадать, почему она не работает. Откройте для себя мощь ADB: от простых команд для повседневных задач до сложных манипуляций, которые помогут вам раскрыть весь потенциал Android.
1. Установка и настройка ADB: фундамент для эффективной работы
В этом разделе изложены шаги по получению актуального набора Platform-Tools, настройке PATH и базовой проверке подключения устройства. Здесь же описаны различия между Windows, macOS и Linux, чтобы вы могли быстро привести среду в рабочее состояние.
1.1. Получение SDK Platform-Tools: официальный источник — ваш лучший друг
Android Debug Bridge (ADB) является неотъемлемой частью пакета `platform-tools` из Android SDK. Использование официальных дистрибутивов от Google — это гарантия получения наиболее стабильной, безопасной и актуальной версии инструмента. В 2026 году, когда экосистема Android продолжает активно развиваться, важно иметь под рукой версию ADB, которая корректно взаимодействует с последними версиями операционной системы и новыми функциями устройств. Скачивание напрямую с официального ресурса предотвращает риски, связанные с использованием модифицированных или устаревших версий, которые могут содержать уязвимости или некорректно работать.
1. Перейдите на официальный сайт Android Developers: Наиболее надёжный путь — это прямой переход по адресу: `https://developer.android.com/studio/releases/platform-tools`. Этот URL ведёт непосредственно на страницу загрузки необходимых инструментов.
2. Выберите актуальную версию для вашей ОС: На странице вы увидите ссылки для скачивания `platform-tools` для следующих операционных систем:
Windows (обычно в формате `.zip`)
macOS (обычно в формате `.zip`)
Linux (обычно в формате `.zip` или `.tar.gz`)
Выберите версию, соответствующую операционной системе вашего рабочего компьютера.
3. Скачайте и распакуйте архив: После загрузки файла архива, необходимо распаковать его содержимое. Рекомендуется выбрать для ADB директорию, которая будет легко доступна и не будет требовать особых прав для доступа. Это упростит как настройку PATH, так и дальнейшую работу с командами.
Для Windows: Создайте папку, например, `C:\adb\` или `C:\android-sdk\platform-tools\`. Распакуйте содержимое архива в неё.
Для macOS/Linux: Используйте директорию, например, `/Users/your_username/android-sdk/platform-tools/` или `/usr/local/android-sdk/platform-tools/`. Убедитесь, что у вас есть права на чтение файлов в данной папке.
1.2. Настройка переменной окружения PATH: команда `adb` везде
Чтобы иметь возможность вызывать команду `adb` из любой директории командной строки (будь то CMD, PowerShell на Windows, или Terminal на macOS/Linux), необходимо добавить путь к директории `platform-tools` в переменную окружения `PATH` вашей операционной системы. Этот шаг является ключевым для удобства работы, избавляя от необходимости постоянно переходить в директорию с ADB.
Windows (современные версии):
1. Нажмите комбинацию клавиш `Win + R` для вызова окна "Выполнить".
2. Введите `sysdm.cpl` и нажмите "Enter". Это откроет окно "Свойства системы".
3. Перейдите на вкладку "Дополнительно" и найдите кнопку "Переменные среды..." в нижней части окна.
4. В открывшемся окне "Переменные среды" найдите переменную `Path` в разделе "Системные переменные" (для всех пользователей) или "Переменные среды пользователя" (только для текущего пользователя). Выберите её и нажмите "Изменить...".
5. В окне редактирования переменной `Path` нажмите кнопку "Создать" и вставьте полный путь к директории, куда вы распаковали `platform-tools` (например, `C:\adb`).
6. После добавления пути, нажмите "OK" во всех открытых окнах, чтобы сохранить изменения. Перезапустите командную строку или терминал, чтобы они подхватили новые переменные окружения.
macOS/Linux:
1. Откройте приложение "Терминал".
2. Вам нужно будет отредактировать файл конфигурации вашей командной оболочки. Чаще всего это `~/.bashrc` (для Bash), `~/.zshrc` (для Zsh - по умолчанию в новых версиях macOS) или `~/.profile`.
3. Откройте соответствующий файл в текстовом редакторе. Например, для Zsh используйте команду: `nano ~/.zshrc`. Если используете Vim: `vim ~/.bashrc`.
4. Добавьте следующую строку в конец файла, заменив `/path/to/your/platform-tools` на реальный путь к вашей директории `adb`:
bash
export PATH="$PATH:/path/to/your/platform-tools"
Пример: `export PATH="$PATH:/Users/your_username/android-sdk/platform-tools"` (для macOS) или `export PATH="$PATH:/home/your_username/android-sdk/platform-tools"` (для Linux).
5. Сохраните файл. В `nano` это делается при помощи `Ctrl+X`, затем `Y` (для подтверждения сохранения) и `Enter`.
6. Чтобы изменения вступили в силу, выполните команду `source ~/.zshrc` (или `source ~/.bashrc`, `source ~/.profile` в зависимости от того, какой файл вы редактировали).
1.3. Включение режима отладки по USB на Android-устройстве: ключ к соединению
ADB не сможет обнаружить ваше устройство (или оно будет отображаться как `unauthorized`), пока вы не активируете специальный "Режим разработчика" и не включите опцию "Отладка по USB" непосредственно на мобильном устройстве. Этот процесс прост и выполняется единожды для каждого устройства.
1. Доступ к "Параметрам разработчика":
Откройте приложение "Настройки" (Settings) на вашем Android-смартфоне или планшете.
Прокрутите вниз, найдите раздел "О телефоне" (About phone) или "Сведения о планшете" (About tablet). В зависимости от производителя и версии Android, этот раздел может называться иначе (например, "Информация о устройстве").
Найдите строку "Номер сборки" (Build number). Нажмите на неё семь раз подряд. Вы увидите всплывающее уведомление: "Вы стали разработчиком!" (You are now a developer!).
Вернитесь в главное меню "Настройки". Теперь там должен появиться новый раздел: "Параметры разработчика" (Developer Options). Обратите внимание: этот пункт может быть глубоко во вложенности меню (например, в "Система" -> "Дополнительно").
2. Активация "Отладки по USB":
Зайдите в новый раздел "Параметры разработчика".
Прокрутите вниз и найдите опцию "Отладка по USB" (USB debugging). Включите её, подтвердив действие во всплывающем окне, которое объясняет, для чего нужна эта функция.
Важная заметка: При первом подключении устройства к новому компьютеру с включенной отладкой по USB, на экране телефона появится запрос: "Разрешить отладку по USB?" (Allow USB debugging?). Обязательно нажмите "Разрешить" (Allow). Если вы планируете часто использовать этот компьютер, отметьте галочку "Всегда разрешать с этого компьютера" (Always allow from this computer) – это сэкономит вам время в будущем, так как запрос не будет появляться повторно.
1.4. Проверка подключения: первый контакт устройств
После того как вы выполнили все предварительные шаги, можно приступить к проверке соединения. Подключите ваш Android-устройство к компьютеру с помощью USB-кабеля. Убедитесь, что USB-кабель функционален и надежно подключен с обеих сторон.
1. Откройте командную строку или терминал на вашем компьютере. Используйте ту же оболочку, где вы настраивали PATH.
2. Введите команду:
bash
adb devices
3. Ожидаемый результат: В случае успешного подключения, вы увидите список подключенных устройств. Если подключено одно устройство, вывод будет выглядеть примерно так:
list
of devices attached
<ВАШ_СЕРИАЛЬНЫЙ_НОМЕР_УСТРОЙСТВА> device
`` — это уникальный идентификатор вашего телефона или планшета.
`device` — означает, что устройство обнаружено, подключено и готово к работе с ADB.
troubleshooting — устранение неполадок
Если устройство не отображается должным образом, или показывается статус `offline` или `unauthorized`, выполните следующие действия:
Проверьте запрос на устройстве: Если ваш статус `unauthorized`, проверьте экран телефона. Возможно, вы пропустили запрос на разрешение отладки. Отсоедините и снова подключите кабель, чтобы запрос появился.
USB-драйверы (Windows): На Windows устройства часто требуют специальные USB-драйверы. Их можно скачать с сайта производителя телефона или использовать универсальные ADB-драйверы. Убедитесь, что драйверы установлены правильно через "Диспетчер устройств".
USB-порт и кабель: Попробуйте другой USB-порт на компьютере. Если возможно, используйте другой, заведомо исправный USB-кабель. Некачественные кабели — частая причина проблем с подключением.
Перезапуск ADB сервера: Иногда сервер ADB может зависнуть. Попробуйте перезапустить его:
bash
adb kill-server
adb start-server
adb devices
Перезагрузка устройства: Простая перезагрузка телефона иногда решает неожиданные проблемы.
2. Основные команды ADB: первое взаимодействие с устройством
Этот раздел охватывает фундаментальные команды, которые станут вашим основным инструментом для взаимодействия с Android-устройствами. Они необходимы для проверки статуса, получения системной информации, просмотра логов и выполнения команд непосредственно на устройстве. Освоение этих команд — первый шаг к эффективному использованию ADB.
2.1. Список устройств и их статус
Команда `adb devices` — это первая команда, которую вы будете использовать после настройки. Она позволяет увидеть, какие устройства подключены к компьютеру и готовы к работе.
Команда:
bash
adb devices
Примеры вывода:
`List of devices attached`
` device`
Этот вывод означает, что устройство с указанным серийным номером (``) подключено и готово к работе.
`List of devices attached`
` offline`
Устройство обнаружено, но находится в нерабочем состоянии. Чаще всего это означает, что нужно разрешить отладку по USB на самом устройстве.
`List of devices attached`
` unauthorized`
Устройство подключено, но не авторизовано для отладки с данного компьютера. Необходимо подтвердить запрос на разрешение отладки на экране устройства.
`List of devices attached`
(Пустой список)
Ни одно устройство не обнаружено. Проверьте подключение, драйверы и настройки отладки на устройстве.
2.2. Проверка состояния устройства
Команда `adb get-state` предоставляет информацию о текущем состоянии подключенного устройства.
Команда:
bash
adb get-state
Возможные состояния:
`device`: Устройство активно и готово к работе.
`offline`: Устройство не отвечает или находится в состоянии, не позволяющем использовать ADB.
`bootloader`: Устройство находится в режиме загрузчика (bootloader).
2.3. Работа с системными логами: `adb logcat`
`adb logcat` — это незаменимый инструмент для мониторинга сообщений, генерируемых операционной системой Android и приложениями. Это позволяет отслеживать события, ошибки и отладочную информацию в реальном времени.
Базовый запуск:
bash
adb logcat
Эта команда выведет все логи, которые устройство генерирует. Вывод может быть очень объемным.
Очистка буфера логов: Перед запуском нового тестового сценария полезно очистить буфер логов.
bash
adb logcat -c
Фильтрация логов: Для повышения эффективности работы с логами, можно применять фильтры. Фильтрация позволяет выводить только сообщения, соответствующие определённым условиям.
По приоритету: Сообщения классифицируются по уровням важности:
`V` - Verbose (подробный)
`D` - Debug (отладочный)
`I` - Info (информационный)
`W` - Warning (предупреждение)
`E` - Error (ошибка)
`F` - Fatal (критическая ошибка)
`S` - Silent (тихий, для отключения всех сообщений)
Пример фильтрации по уровню "Info" и выше:
bash
adb logcat :I
Эта команда покажет все сообщения с уровнем `Info`, `Warning`, `Error` и `Fatal`.
Фильтрация по тегу: Разработчики часто используют свои уникальные теги для логирования.
bash
adb logcat YourAppTag:D :S
Эта команда выведет только сообщения с тегом `YourAppTag` с уровнем `Debug` и выше, а все остальные сообщения будут проигнорированы (`:S`).
Сохранение логов в файл: Для последующего анализа логи можно перенаправить в файл.
bash
adb logcat > log_output.txt
Для получения "снимка" логов (дампа) на текущий момент, используйте опцию `-d`:
bash
adb logcat -d > log_snapshot.txt
2.4. Интерактивная оболочка `adb shell`
Команда `adb shell` позволяет получить доступ к командной оболочке Android-устройства, подобно терминалу в Linux. Это открывает огромные возможности для выполнения различных команд непосредственно на устройстве, включая системные утилиты.
Запуск оболочки:
bash
adb shell
После выполнения этой команды, ваш командный ввод будет перенаправлен на устройство. Вы увидите приглашение командной строки устройства (например, `#` для root-пользователя или `$` для обычного пользователя).
Выполнение команд в оболочке: Вы можете вводить многие стандартные Linux-команды, а также специфичные для Android команды. Например:
`ls -l` — посмотреть список файлов с деталями.
`pwd` — показать текущую директорию.
`exit` — выйти из оболочки.
Выполнение одной команды без входа в оболочку: Для выполнения единичной команды можно использовать следующий синтаксис:
bash
adb shell <command_to_execute>
Пример: `adb shell ls -l /sdcard/`
Получение Root-прав: Если устройство имеет root-доступ, вы можете использовать `su` внутри `adb shell` для получения прав суперпользователя:
bash
adb shell
su
# Теперь вы root-пользователь
2.5. Версии и управление сервером ADB
Полезно знать версию ADB, с которой вы работаете, а также уметь управлять самим ADB-сервером.
Проверка версии клиента ADB:
bash
adb version
Эта команда показывает версию клиента ADB, установленного на вашем компьютере.
Управление ADB сервером: ADB работает по клиент-серверной архитектуре. Клиент (команда `adb` в вашем терминале) взаимодействует с сервером, который работает на вашем компьютере и управляет связью с устройствами.
`adb kill-server`: Завершает работу ADB-сервера. Это может понадобиться, если сервер завис или работает некорректно.
`adb start-server`: Запускает ADB-сервер. Обычно сервер запускается автоматически при первом вызове команды `adb`.
2.6. Практические советы по началу работы
Комбинируйте команды: Не бойтесь комбинировать `adb shell` с другими утилитами, например, для сохранения вывода команды в файл на устройстве: `adb shell "dumpsys wifi > /sdcard/wifi_state.txt"`.
Используйте `grep`: При работе с большими объёмами вывода (логи, `getprop`, `dumpsys`), используйте `grep` для фильтрации: `adb logcat | grep "YourTag"` или `adb shell getprop | grep "version"`.
Автодополнение: Некоторые эмуляторы терминала поддерживают автодополнение для ADB команд, что может ускорить работу.
3. Манипуляции с файлами: переносы и управление данными
Работа с файловой системой Android-устройств — одна из базовых, но крайне важных функций ADB. Команды `adb push` и `adb pull` позволяют легко переносить файлы между компьютером и устройством, а `adb shell` предоставляет полный набор утилит для управления файлами непосредственно на устройстве. Этот раздел подробно рассмотрит все нюансы работы с файлами, от простых переносов до управления директориями и разрешениями.
3.1. Копирование файлов на устройство: `adb push`
Команда `adb push` используется для копирования одного или нескольких файлов с вашего компьютера на Android-устройство.
Синтаксис:
bash
adb push <локальный_путь> <удалённый_путь>
``: Путь к файлу или папке на вашем компьютере, который вы хотите скопировать.
``: Путь к директории на Android-устройстве, куда будет скопирован файл. Если целевой директории не существует, команда может завершиться ошибкой (зависит от версии ADB и Android).
Примеры использования:
Скопировать APK-файл в папку загрузок устройства:
bash
adb push my_application.apk /sdcard/Download/
Примечание: `/sdcard/` обычно является синонимом для основной пользовательской директории хранения данных на устройстве.
Скопировать файл конфигурации в директорию приложения (требует root-доступа для системных директорий):
bash
adb push settings.conf /data/data/com.example.myapp/files/
Копирование нескольких файлов (если ADB поддерживает, обычно это делается через скрипт или архив):
bash
# Для копирования нескольких файлов, как правило, используют создание архива
# или последовательные команды push.
adb push file1.txt /sdcard/MyData/
adb push file2.log /sdcard/MyData/
Особенности:
ADB может перезаписать существующий файл без предупреждения.
Если возникнет ошибка "permission denied", это, скорее всего, связано с недостатком прав доступа к целевой директории на устройстве.
3.2. Копирование файлов с устройства: `adb pull`
Команда `adb pull` выполняет обратную операцию: копирует файлы и директории с Android-устройства на ваш компьютер.
Синтаксис:
bash
adb pull <удалённый_путь> [<локальный_путь>]
``: Путь к файлу или директории на Android-устройстве, который вы хотите скопировать.
`[]`: Путь на вашем компьютере, куда будет скопирован файл. Если этот параметр не указан, файл будет скопирован в текущую рабочую директорию вашего терминала.
Примеры использования:
Скопировать файл логов с устройства на рабочий стол:
bash
adb pull /sdcard/MyApp/logs/error.log C:/Users/Username/Desktop/
или, переместившись в нужную директорию на ПК:
bash
cd C:/Users/Username/Desktop/
adb pull /sdcard/MyApp/logs/error.log .
Скопировать все файлы из директории (сначала создайте её на ПК):
bash
mkdir ~/Downloads/DeviceFiles
adb pull /sdcard/MyApp/Data/ ~/Downloads/DeviceFiles/
Примечание: `adb pull` в большинстве версий ADB не поддерживает прямое рекурсивное копирование директорий. Для этого лучше использовать архивацию на устройстве (`tar`).
Скопировать скриншот, сделанный ранее:
bash
adb pull /sdcard/screenshot.png ./screenshots/
3.3. Работа в оболочке файловой системы: `adb shell`
`adb shell` предоставляет доступ к командной строке устройства, где вы можете выполнять стандартные Linux-утилиты для управления файлами.
Просмотр содержимого директорий:
`ls`: Список файлов и директорий.
`ls -l`: Список с подробной информацией (права доступа, владелец, размер, дата модификации).
`ls -a`: Показать скрытые файлы (начинающиеся с точки).
Пример:
bash
adb shell ls -l /sdcard/Download/
Создание директорий:
`mkdir `: Создаёт новую директорию.
Пример:
bash
adb shell mkdir /sdcard/MyTestData
Рекурсивное создание: `mkdir -p /sdcard/Project/Data/Logs` (создаст все промежуточные директории).
Удаление файлов и директорий:
`rm `: Удаляет файл.
bash
adb shell rm /sdcard/old_log.txt
`rm -r `: Рекурсивно удаляет директорию и всё её содержимое. Используйте с крайней осторожностью!
bash
adb shell rm -r /sdcard/TempData/
`rmdir `: Удаляет пустую директорию.
Копирование и перемещение файлов внутри устройства:
`cp `: Копирует файл.
bash
adb shell cp /sdcard/config.json /data/data/com.example.myapp/config.json
`mv `: Перемещает или переименовывает файл/директорию.
bash
adb shell mv /sdcard/draft.txt /sdcard/Documents/final.txt
Смена прав доступа (chmod) и владельца (chown):
`chmod `: Изменяет права доступа к файлу или директории.
bash
adb shell chmod +x /data/local/tmp/my_script.sh
`chown : `: Изменяет владельца и группу файла. Эти команды часто требуют root-прав.
3.4. Особенности безопасности и лучшие практики
Доступ к защищённым областям: Попытка доступа к директориям, таким как `/data/data//` (где хранятся данные приложений) или системным разделам, без root-доступа, скорее всего, завершится ошибкой `permission denied`. Для таких операций требуется либо root-права, либо специальные возможности отладки, предоставляемые самим приложением.
Архивирование директорий: Когда нужно скопировать целую директорию с устройства на ПК (например, для анализа данных приложения), наиболее надёжным методом является её архивация на устройстве с помощью `tar`, а затем копирование архива.
bash
# Создать архив директории
adb shell "tar -czvf /sdcard/MyApp_Data.tar.gz /data/data/com.example.myapp/files/"
# Скопировать архив на ПК
adb pull /sdcard/MyApp_Data.tar.gz ./
# Разархивировать на ПК
tar -xzvf MyApp_Data.tar.gz
Понимание путей: Пути в Android могут быть сложными. `/sdcard/` — это обычно основной путь для внешнего хранилища. Системные директории (`/system/`, `/data/`) обычно требуют root-доступа.
Автоматизация: Для комплексных операций с файлами, таких как синхронизация директорий или копирование большого количества файлов, используйте скриптовые языки (Bash, Python) в сочетании с ADB командами.
3.5. Примеры рабочих сценариев
Извлечение конфигурационных файлов: Если вам нужно получить доступ к файлу конфигурации приложения, которое хранит его локально, вы можете использовать `adb pull` (если файл находится во внешней памяти) или комбинацию `adb shell` с `tar` для копирования из защищенных областей (при наличии root).
Загрузка тестовых данных: Для тестирования приложения, которое работает с файлами, вы можете предварительно загрузить необходимые тестовые данные на устройство с помощью `adb push`.
Резервное копирование данных приложения: Перед удалением или переустановкой приложения, вы можете попытаться скопировать его данные (базы данных, файлы настроек) на ПК для последующего восстановления.
4. Управление приложениями: установка, удаление и диагностика
Управление приложениями — одна из наиболее частых задач при работе с ADB. Этот раздел охватывает команды для установки APK-файлов, их удаления, обновления, а также для детального анализа установленных пакетов и управления их состоянием.
4.1. Установка APK-файлов
Команда `adb install` позволяет устанавливать приложения на Android-устройство из APK-файлов.
Базовый синтаксис:
bash
adb install <путь_к_apk_файлу>
``: Полный путь к APK-файлу на вашем компьютере.
Примеры:
bash
adb install /path/to/my_app_v1.0.apk
Эта команда установит приложение. Если приложение с таким же пакетным именем уже установлено, команда завершится ошибкой `INSTALL_FAILED_ALREADY_EXISTS`.
Ключевые опции:
`-r` (reinstall/replace): Обновляет существующее приложение. Если приложение уже установлено, оно будет перезаписано новым APK. Это самая часто используемая опция для установки новых версий.
bash
adb install -r /path/to/my_app_v1.1.apk
`-d` (allow-version-code-downgrade): Позволяет установить более старую версию приложения, чем установлена на устройстве (обычно это запрещено). Полезно для тестирования откатов.
bash
adb install -d /path/to/old_app_v0.9.apk
`-t` (allow-test-packages): Разрешает установку тестовых APK-файлов. Тестовые APK обычно имеют специальные подписи или метки.
bash
adb install -t /path/to/my_app_test.apk
`-s` (skip-device-check): Пропускает проверку устройства. Используется редко.
`-p `: Указывает пакетное имя, для которого устанавливается APK (чаще используется при работе с Split APKs, которые в 2026 году встречаются реже).
Установка нескольких APK-файлов (Split APKs):
В современных версиях Android приложения могут состоять из нескольких APK (например, разделение по архитектуре CPU, плотности экрана и т.д.). Для установки таких пакетов используется команда `adb install-multiple`.
bash
adb install-multiple base.apk config.arm.apk res.xxhdpi.apk
В большинстве случаев, если вы скачиваете приложение из Google Play, оно уже собрано в один APK или использует Dynamic Delivery, и вам не придется работать с `install-multiple`.
4.2. Удаление приложений
Команда `adb uninstall` позволяет удалить приложения с устройства.
Базовый синтаксис:
bash
adb uninstall <имя_пакета>
``: Полное пакетное имя приложения (например, `com.example.myapp`).
Примеры:
bash
adb uninstall com.example.myapp
Эта команда удалит приложение и вместе с ним его пользовательские данные и кэш.
Ключевые опции:
`-k` (keep-data): Удаляет приложение, но сохраняет его данные и кэшированные файлы. Это полезно, если вы хотите удалить только само приложение, но оставить настройки или пользовательский контент для последующего восстановления.
bash
adb uninstall -k com.example.myapp
4.3. Управление пакетами: `adb shell pm`
Утилита `pm` (package manager) внутри `adb shell` предоставляет мощные средства для работы с информацией о пакетах приложений.
Список всех установленных пакетов:
bash
adb shell pm list packages
Без аргументов команда выведет все пакеты, установленные на устройстве.
Фильтрация списка пакетов:
`-f`: Показать путь к APK-файлу для каждого пакета.
bash
adb shell pm list packages -f
`-d`: Отобразить только отключённые (disabled) пакеты.
bash
adb shell pm list packages -d
`-e`: Отобразить только включенные (enabled) пакеты.
bash
adb shell pm list packages -e
`-s`: Отобразить только системные пакеты (те, что предустановлены с ОС).
bash
adb shell pm list packages -s
`-3`: Отобразить только сторонние пакеты (установленные пользователем).
bash
adb shell pm list packages -3
Комбинирование с `grep`: Чтобы найти конкретное приложение, можно комбинировать `pm list packages` с `grep`.
bash
adb shell pm list packages | grep -i 'example'
Эта команда выведет все пакеты, в названии которых содержится слово 'example' (без учёта регистра).
Включение и отключение приложений:
`adb shell pm enable `: Включает отключённое приложение.
bash
adb shell pm enable com.example.disabledapp
`adb shell pm disable `: Отключает приложение. Отключённые приложения не работают в фоне и не отображаются в лаунчере.
bash
adb shell pm disable com.example.myapp
`adb shell pm disable-user `: Отключает приложение для текущего пользователя (используется в многопользовательских сценариях).
4.4. Очистка данных приложения
Команда `adb shell pm clear` удаляет все данные, связанные с приложением, как если бы оно было только что установлено.
Синтаксис:
bash
adb shell pm clear <имя_пакета>
Пример:
bash
adb shell pm clear com.example.myapp
Эта команда удалит все пользовательские настройки, кэш, базы данных и файлы, созданные приложением. Используется для сброса состояния приложения к исходному.
4.5. Практические примеры и сценарии
Чистая установка: Перед установкой новой версии приложения, вы можете выполнить чистую установку, удалив старую версию вместе с данными:
bash
adb uninstall -k com.example.myapp # Удаляем с сохранением данных (если хотим их увидеть)
adb shell pm clear com.example.myapp # Очищаем данные (чтобы приложение было как новое)
adb install /path/to/new_app.apk # Устанавливаем новую версию
Отключение системных для экономии ресурсов: На некоторых устройствах можно отключить предустановленные приложения, которые не используются, чтобы освободить память и повысить производительность.
bash
adb shell pm disable <system_package_name>
Предупреждение: Отключение системных приложений может привести к нестабильной работе устройства. Делайте это только если вы точно знаете, какое приложение отключаете.
Диагностика проблем: Если приложение ведет себя некорректно, полная очистка его данных (`pm clear`) может помочь сбросить его состояние к базовому, исключив проблемы, связанные с повреждением данных.
5. Запуск Activity и Service
Команды Android Debug Bridge (ADB) позволяют напрямую запускать компоненты приложений, такие как Activity (экраны) и Service (фоновые процессы), а также отправлять системные Broadcast-сообщения. Эти возможности критически важны для тестирования, отладки и автоматизации, позволяя имитировать действия пользователя или внешние события, влияющие на работу приложения.
5.1. Запуск Activity: `adb shell am start`
Команда `am start` (Activity Manager) используется для запуска Activity (экранов, пользовательских интерфейсов) приложения.
Базовый синтаксис:
bash
adb shell am start -n <полное_имя_пакета>/<полное_имя_activity>
`-n`: Обязательный флаг, указывающий на компонент (Activity) для запуска.
``: Имя пакета приложения (например, `com.example.myapp`).
``: Полное квалифицированное имя Activity, включая имя класса. Часто начинается с точки (`.`), если Activity объявлен как точка входа внутри манифеста.
Пример запуска MainActivity:
Предположим, у нас есть приложение с пакетным именем `com.example.myapp`, и его главный экран (`MainActivity`) объявлен в манифесте как `.MainActivity`.
bash
adb shell am start -n com.example.myapp/.MainActivity
Эта команда откроет главный экран приложения `com.example.myapp`.
Дополнительные флаги (Intents):
При запуске Activity можно передавать дополнительные данные с помощью Intent-флагов. Это позволяет имитировать сценарии, где приложение получает данные извне.
`-a `: Устанавливает действие Intent.
`-d `: Устанавливает данные (URI) для Intent.
`--es `: Передаёт строку (extra string).
`--ei `: Передаёт целое число (extra integer).
`--ez `: Передаёт булево значение.
`-c `: Устанавливает категорию Intent.
Пример запуска Activity с данными:
Допустим, Activity `DetailActivity` в приложении `com.example.myapp` принимает ID товара как целое число.
bash
adb shell am start -n com.example.myapp/.DetailActivity --ei item_id 12345
Чтобы запустить Activity, который должен открывать веб-ссылку:
bash
adb shell am start -a android.intent.action.VIEW -d "https://www.example.com"
5.2. Запуск Service: `adb shell am startservice`
Service — это компонент приложения, который выполняется в фоновом режиме без прямого пользовательского интерфейса. Команда `am startservice` позволяет запускать такие службы.
Базовый синтаксис:
bash
adb shell am startservice -n <полное_имя_пакета>/<полное_имя_service>
`-n`: Указывает на Service для запуска.
``: Имя пакета приложения.
``: Полное имя класса Service.
Пример:
Если в приложении `com.example.myapp` есть фоновая служба `UpdateService`:
bash
adb shell am startservice -n com.example.myapp/com.example.myapp.UpdateService
Эта команда запустит указанный Service. Service будет работать в фоновом режиме.
5.3. Отправка Broadcast-сообщений: `adb shell am broadcast`
Broadcast-сообщение (или Intent-фильтр) — это механизм, позволяющий приложениям и системе обмениваться информацией о событиях. Команда `am broadcast` позволяет отправлять кастомные Broadcast-сообщения.
Базовый синтаксис:
bash
adb shell am broadcast -a <действие>
`-a `: Указывает действие (action) для Broadcast-сообщения. Это строка, которая идентифицирует тип события.
Примеры:
Отправка стандартного действия:
bash
adb shell am broadcast -a android.intent.action.BOOT_COMPLETED
(Это имитирует событие завершения загрузки системы, что может вызвать срабатывание приложений, подписанных на это событие).
Отправка кастомного действия с данными:
bash
adb shell am broadcast -a com.example.myapp.CUSTOM_ACTION --es message "Hello from ADB" --ei value 42
Здесь `com.example.myapp.CUSTOM_ACTION` — это наше собственное действие, а `--es` и `--ei` передают String и Integer параметры соответственно.
5.4. Практические примеры и сценарии использования
Тестирование обработки глубоких ссылок (Deep Links): Вы можете использовать `am start` с передачей URL через `-d`, чтобы проверить, как ваше приложение обрабатывает внешние ссылки.
Имитация системных событий: Командой `am broadcast` можно тестировать, как приложение реагирует на различные системные события, например, на изменение состояния сети, батареи или завершение загрузки.
Отправка пользовательских команд: Для приложений, которые слушают кастомные Broadcast-сообщения (например, для запуска фоновых задач или обновления данных), `am broadcast` позволяет отправлять эти команды вручную.
Реактивация фоновых служб: Если фоновый Service был остановлен системой, можно попытаться запустить его повторно с помощью `am startservice`.
5.5. Советы по работе с компонентами
Поиск имен компонентов: Если вы не знаете точное имя Activity или Service, вам могут помочь инструменты анализа Android-приложений (например, Jadx, Android Studio) или вывод `adb shell dumpsys activity` и `adb shell dumpsys package `.
Различайте Activity и Service: Не пытайтесь запустить Service командой `am start` — это вызовет ошибку. Убедитесь, что вы используете правильную команду для нужного типа компонента.
Проверяйте данные: При передаче данных через Intent (с помощью `--es`, `--ei` и т.п.), убедитесь, что имена ключей и типы данных (строка, число, булево) соответствуют тому, что ожидает ваш компонент.
6. Системные команды: контроль над ОС Android
Используя ADB, вы получаете доступ к широкому спектру системных команд, которые позволяют контролировать состояние устройства, получать диагностическую информацию и управлять процессами. Эти команды незаменимы для глубокого анализа производительности, поведения системы и устранения сложных проблем.
6.1. Перезагрузка устройства
ADB позволяет управлять состоянием перезагрузки устройства:
Обычная перезагрузка:
bash
adb reboot
Эта команда инициирует стандартный процесс перезагрузки устройства.
Перезагрузка в режим загрузчика (Fastboot):
bash
adb reboot bootloader
После выполнения этой команды устройство перезагрузится и перейдёт в режим Fastboot. Этот режим используется для низкоуровневых операций, таких как прошивка разделов (boot, system, recovery) или разблокировка загрузчика. На компьютере для работы с этим режимом используется утилита `fastboot`.
Перезагрузка в режим восстановления (Recovery):
bash
adb reboot recovery
Это перезагрузит устройство в режим Recovery. В этом режиме можно выполнять установку системных обновлений (через `adb sideload`), очистку данных (`wipe data`), создание резервных копий и другие операции.
6.2. Получение свойств устройства: `adb shell getprop`
Команда `adb shell getprop` позволяет просмотреть все системные свойства Android-устройства, которые определяют его конфигурацию, аппаратные характеристики и версию ПО.
Вывод всех свойств:
bash
adb shell getprop
Эта команда выведет большой список пар "ключ=значение", описывающих различные аспекты системы.
Получение конкретного свойства:
Для поиска определённого свойства, можно использовать `grep` или указать ключ свойства напрямую:
Версия Android:
bash
adb shell getprop ro.build.version.release
Пример вывода: `13.0`
Версия SDK:
bash
adb shell getprop ro.build.version.sdk
Пример вывода: `33`
Модель устройства:
bash
adb shell getprop ro.product.model
Пример вывода: `Pixel 7 Pro`
Производитель устройства:
bash
adb shell getprop ro.product.manufacturer
Пример вывода: `Google`
Серийный номер (аналогично get-serialno):
bash
adb shell getprop ro.serialno
Статус Root-доступа:
bash
adb shell getprop ro.debuggable
(Значение `1` может указывать на возможность отладки, для проверки root-прав лучше использовать `adb shell su -c id`)
Изменение свойств (требует root):
Некоторые свойства могут быть изменены с помощью `setprop`, но это требует root-прав и может повлиять на стабильность работы системы.
bash
adb shell setprop service.adb.tcp.port 5555 # для включения ADB over Wi-Fi
6.3. Сбор детальной информации о системе: `adb shell dumpsys`
`adb shell dumpsys` — это мощная утилита, которая собирает детализированную информацию о состоянии различных системных служб Android. Её вывод может быть очень обширным, но при правильной фильтрации она предоставляет бесценные данные для диагностики.
Базовый синтаксис:
bash
adb shell dumpsys
Эта команда выведет информацию обо всех службах.
Сбор информации по конкретным службам:
Наиболее полезные подкоманды:
Состояние батареи:
bash
adb shell dumpsys battery
Вывод содержит информацию о текущем уровне заряда, статусе зарядки, температуре, напряжении и другую информацию, связанную с питанием.
Использование памяти:
bash
adb shell dumpsys meminfo <имя_пакета>
Эта команда показывает детальную статистику использования памяти конкретным приложением (PID или имя пакета). Помогает выявить утечки памяти.
Загрузка CPU:
bash
adb shell dumpsys cpuinfo
Показывает информацию об использовании процессорного времени различными процессами.
Информация об активностях (Activity Manager):
bash
adb shell dumpsys activity
Предоставляет данные о запущенных Activity, Task'ах, процессах и сервисах. Очень полезна для понимания жизненного цикла приложений.
Информация об окнах (Window Manager):
bash
adb shell dumpsys window
Отображает информацию о видимых окнах, их состоянии, иерархии и свойствах.
Сетевая информация (NetStats):
bash
adb shell dumpsys netstats
Статистика использования сетевого трафика приложениями.
Информация о Wi-Fi:
bash
adb shell dumpsys wifi
Детальная информация о состоянии Wi-Fi, подключенных сетях, уровнях сигнала.
Фильтрация вывода `dumpsys`:
Для упрощения анализа, вывод `dumpsys` часто перенаправляют в `grep`.
bash
adb shell dumpsys battery | grep "level:"
Эта команда выведет только строку с уровнем заряда батареи.
6.4. Список процессов и мониторинг: `ps` и `top`
Эти команды позволяют отслеживать запущенные на устройстве процессы и их ресурсы.
Список процессов (`ps`):
bash
adb shell ps
Выводит список всех активных процессов, их PID, владельца (user), использование CPU и другой базовой информации.
`ps -A` или `ps -ef`: Расширенный вывод (может отличаться в зависимости от оболочки устройства).
Мониторинг в реальном времени (`top`):
bash
adb shell top
`top` предоставляет интерактивный список процессов, отсортированный по использованию ресурсов (CPU, память), который обновляется в реальном времени. Это аналог команды `top` в Linux.
Нажмите `q` для выхода из `top`.
Нажмите `m` для сортировки по памяти, `P` для сортировки по CPU.
6.5. Советы по использованию системных команд
Сложность вывода: Вывод `dumpsys` может быть очень объёмным. Используйте `grep`, `less` (для постраничного просмотра: `adb shell dumpsys | less`) и перенаправление в файлы для удобства работы.
Права доступа: Многие команды, особенно те, что касаются системных файлов или изменения настроек (`setprop`), требуют root-доступа.
Контекст: При диагностике проблем, всегда старайтесь сопоставлять вывод системных команд с конкретными действиями или событиями, которые привели к проблеме. Например, собрать `dumpsys battery` до и после интенсивной работы приложения.
7. Сетевые возможности ADB: отлаживаем подключения
ADB предоставляет мощные инструменты для управления сетевыми подключениями Android-устройств, позволяя выполнять команды как по USB, так и по Wi-Fi, а также перенаправлять сетевые порты. Это критически важные возможности для отладки сетевых приложений, исследования сетевого трафика и автоматизации задач, не требующих физического подключения.
7.1. Подключение по Wi‑Fi: `adb connect`
ADB может работать с устройствами, подключенными к той же локальной сети, что и ваш компьютер, без использования USB-кабеля. Это удобно для удалённой отладки, тестирования на нескольких устройствах одновременно или когда USB-порт недоступен.
1. Настройка устройства (первоначальное подключение по USB):
Подключите устройство к компьютеру по USB.
Убедитесь, что включена "Отладка по USB" (`adb devices` должен показывать устройство как `device`).
Откройте командную строку и дайте устройству команду установить ADB-демон на прослушивание TCP-порта. Наиболее распространённый порт — 5555 (но можно использовать и другой, если этот занят).
bash
adb tcpip 5555
Если команда выполнена успешно, вы увидите сообщение вроде `restarting in TCP mode port: 5555`.
Теперь можно отключить USB-кабель.
2. Подключение по IP-адресу:
Найдите IP-адрес вашего Android-устройства в той же сети (например, через настройки Wi-Fi на телефоне или командой `adb shell ip address`).
Используйте команду `adb connect`, указав IP-адрес и порт, на котором слушает ADB-демон:
bash
adb connect <IP_адрес_устройства>:<порт>
Пример:
bash
adb connect 192.168.1.104:5555
Если соединение установлено успешно, вы увидите сообщение `connected to 192.168.1.104:5555`. Теперь вы можете выполнять любые ADB команды, как если бы устройство было подключено по USB.
7.2. Отключение от устройства: `adb disconnect`
Когда вам больше не нужно работать с устройством по беспроводной сети, вы можете отключиться от него:
Синтаксис:
bash
adb disconnect [<IP_адрес>[:<порт>]]
Примеры:
Отключиться от конкретного устройства:
bash
adb disconnect 192.168.1.104:5555
Отключиться от всех устройств:
bash
adb disconnect
Эта команда завершает TCP-соединение с ADB-сервером устройства.
7.3. Перенаправление портов: `adb forward`
Команда `adb forward` позволяет настроить перенаправление портов между вашим компьютером и Android-устройством. Это очень удобно для отладки сетевых приложений, когда клиент и сервер работают на разных сторонах, но должны обмениваться данными через определённые порты.
Синтаксис:
bash
adb forward <локальный_путь> <удалённый_путь>
``: Описывает порт или Unix-сокет на стороне компьютера. Обычно используется формат `tcp:`.
``: Описывает порт или Unix-сокет на стороне Android-устройства. Также чаще всего используется формат `tcp:`.
Пример использования (отладка Android-приложения):
Предположим, ваше Android-приложение слушает порт `9090` на устройстве (например, сервер для автоматического тестирования). Вы хотите подключиться к этому серверу с вашего компьютера, но ваше приложение не доступно напрямую из внешней сети. Вы можете настроить перенаправление:
bash
adb forward tcp:8080 tcp:9090
Теперь, если вы из другого приложения на вашем компьютере (или из вашей IDE) попытаетесь подключиться к `localhost:8080`, трафик будет перенаправлен на `localhost:9090` на Android-устройстве.
Управление перенаправлениями:
`adb forward --list`: Показать все активные перенаправления.
`adb forward --remove `: Удалить конкретное перенаправление.
bash
adb forward --remove tcp:8080
`adb forward --remove-all`: Удалить все активные перенаправления.
Сценарии применения:
Отладка мобильных веб-сервисов, работающих внутри приложения.
Подключение удалённых отладчиков (например, Java Debug Wire Protocol) к приложению на устройстве.
Перенаправление трафика от утилит анализа сети (например, Proxy) к приложению.
7.4. Сетевая информация устройства через `adb shell`
ADB shell предоставляет доступ к стандартным сетевым утилитам Android.
Просмотр IP-адресов:
bash
adb shell ip address show
Эта команда покажет IP-адреса, MAC-адреса и другие детали для всех сетевых интерфейсов устройства (Wi-Fi, Ethernet, Loopback).
Сетевая статистика:
bash
adb shell netstat
Выводит статистику сетевых соединений, прослушиваемых портов и таблиц маршрутизации.
Проверка доступности хоста:
bash
adb shell ping google.com
Стандартная команда ping для проверки доступности удалённого узла.
7.5. Советы по безопасности и эффективности
Безопасность Wi-Fi подключения: При подключении ADB по Wi-Fi, убедитесь, что устройство и компьютер находятся в доверенной сети. Если вы используете общедоступные сети, такое подключение может быть небезопасным.
Управление портами: Будьте внимательны при использовании `adb forward`, чтобы не перенаправлять трафик на чувствительные порты или не создавать конфликты с другими приложениями.
Отключение `adb tcpip`: После завершения работы с ADB по Wi-Fi, рекомендуется отключить режим TCP/IP, вернувшись к стандартному USB-подключению (хотя при перезагрузке устройства режим TCP/IP обычно сбрасывается):
bash
adb usb
Эта команда переводит ADB-демон обратно в режим ожидания USB-подключения.
8. Продвинутые техники: скриншоты, запись экрана, ввод и SQLite
ADB предоставляет набор мощных инструментов для визуального анализа и имитации взаимодействия с устройством, а также для работы с данными приложений. Эти продвинутые техники делают ADB незаменимым для тестировщиков, разработчиков и аналитиков.
8.1. Создание скриншотов и запись экрана
Визуальная документация — это ключ к быстрому выявлению и демонстрации проблем. ADB позволяет делать скриншоты и записывать видео с экрана устройства.
Создание скриншота:
Команда `screencap` сохраняет снимок экрана непосредственно на устройстве.
Синтаксис:
bash
adb shell screencap <путь_на_устройстве>
Пример:
bash
adb shell screencap /sdcard/screenshot_$(date +%Y%m%d_%H%M%S).png
Эта команда создаст PNG-файл с текущим содержимым экрана в директории `/sdcard/`, используя дату и время для уникального именования.
Копирование скриншота на ПК: После создания файла на устройстве, его необходимо скопировать на компьютер:
bash
adb pull /sdcard/screenshot_20260315_103000.png ./screenshots/
(Предполагается, что директория `./screenshots/` существует на ПК).
Запись экрана (видео):
Команда `screenrecord` позволяет записывать видео с экрана устройства.
Синтаксис:
bash
adb shell screenrecord <путь_на_устройстве>
Пример:
bash
adb shell screenrecord /sdcard/screen_recording.mp4
Остановка записи: Для остановки записи в интерактивном режиме терминала нажмите `Ctrl + C`. Если вы запускаете запись в скрипте, вам нужно будет использовать методы для завершения процесса (например, `pkill screenrecord`).
Копирование видео на ПК:
bash
adb pull /sdcard/screen_recording.mp4 ./recordings/
Параметры `screenrecord`:
`--time-limit `: Ограничивает продолжительность записи.
`--size x`: Устанавливает разрешение видео (например, `--size 1080x1920`).
`--rotate`: Поворачивает видео на 90 градусов.
`--verbose`: Включает отображение информации о записи в логах.
8.2. Эмуляция ввода: жесты, кнопки и текст
ADB позволяет имитировать действия пользователя: нажатия на экран, свайпы, нажатия аппаратных клавиш и ввод текста. Это крайне полезно для автоматизации тестирования UI.
Эмуляция нажатия (Tap):
`input tap ` эмулирует нажатие пальцем в указанных координатах экрана. Координаты `(0,0)` — верхний левый угол.
Пример: Нажать в центре экрана 1080x1920:
bash
adb shell input tap 540 960
Эмуляция свайпа (Swipe):
`input swipe [длительность_мс]` эмулирует проведение пальцем от начальных координат к конечным.
Пример: Сдвинуть экран вверх (имитация свайпа вниз):
bash
adb shell input swipe 540 1500 540 500 500
(Старт внизу экрана, конец примерно на 1/4 высоты; длительность 500 мс).
Эмуляция нажатия клавиш:
`input keyevent ` эмулирует нажатие аппаратной или системной клавиши.
Примеры кодов:
`3` — Home
`4` — Back
`5` — Volume Up
`6` — Volume Down
`82` — Menu (или Power, зависит от устройства)
`176` — Turn Screen On/Off (Power)
`66` — Enter
`28` — Del
Пример: Нажать кнопку "Home":
bash
adb shell input keyevent 3
Ввод текста:
`input text ` вводит текст в текущее активное поле ввода.
Пример: Ввести "hello world" в текстовое поле:
bash
adb shell input text "hello world"
Сложные символы: Для ввода специальных символов или пробелов, текст нужно заключать в кавычки.
8.3. Работа с базами данных SQLite
Многие Android-приложения используют SQLite для локального хранения данных. ADB позволяет получить доступ к этим базам данных.
Запуск интерактивной оболочки SQLite:
`adb shell sqlite3 ` запускает интерпретатор SQLite на устройстве.
Пример:
bash
adb shell sqlite3 /data/data/com.example.myapp/databases/my_app_db.sqlite
Внутри оболочки: Вы можете выполнять обычные SQL-запросы:
sql
.tables -- Показать список таблиц
.schema <table_name> -- Показать структуру таблицы
SELECT FROM users WHERE status = 'active'; -- Выполнить запрос
.quit -- Выйти из оболочки
Права доступа: Доступ к `/data/data/` обычно требует root-прав.
Копирование базы данных на ПК:
Для более удобного анализа баз данных, их можно скопировать на компьютер.
bash
adb pull /data/data/com.example.myapp/databases/my_app_db.sqlite ./db_backup/
После этого файл можно открыть в любом SQLite-браузере на ПК (например, DB Browser for SQLite).
8.4. Сценарии продвинутого тестирования
Регрессионное тестирование UI: Запись экрана во время выполнения автоматизированных UI-тестов позволяет легко увидеть, что произошло, если тест упал.
Тестирование ввода: Имитация нажатий и свайпов с помощью `input` команд позволяет автоматизировать тестирование пользовательских интерфейсов и сценариев.
Анализ сохранения данных: Получение доступа к SQLite базам данных позволяет проверить, корректно ли приложение сохраняет и обрабатывает информацию.
9. ADB sideload: обновление прошивок и систем
`adb sideload` — это специализированная команда, используемая для установки zip-архивов (обычно прошивок, обновлений системы или кастомных recovery) на Android-устройство, находящееся в режиме Recovery. Этот метод часто применяется, когда стандартное обновление по воздуху (OTA) недоступно или когда требуется более низкоуровневое вмешательство в систему.
9.1. Принцип работы `adb sideload`
Команда `adb sideload` передает zip-архив в режиме Recovery. Recovery-режим — это отдельная загрузочная среда, которая позволяет выполнять низкоуровневые операции с файловой системой устройства. Главное отличие `sideload` от `install` заключается в том, что `adb sideload` работает непосредственно из Recovery, тогда как `adb install` устанавливает приложения в пользовательское окружение Android.
9.2. Процедура использования `adb sideload`
Для выполнения процесса `adb sideload` необходимо пройти несколько этапов:
1. Подготовка устройства:
Зарядите устройство: Убедитесь, что уровень заряда батареи устройства составляет не менее 50-60%, чтобы предотвратить его выключение во время процесса.
Перезагрузка в Recovery: Подключите устройство к компьютеру по USB (это может быть необходимо для ADB-сервера, даже если основная операция будет через sideload). Затем выполните команду:
bash
adb reboot recovery
Устройство должно перезагрузиться и загрузиться в режим Recovery. Интерфейс Recovery может отличаться в зависимости от производителя устройства и установленной версии (стоковое Recovery, TWRP, CWM и т.д.).
2. Выбор режима "Apply update from ADB" в Recovery:
После загрузки в Recovery, найдите меню, которое позволяет применить обновление из ADB. Оно может называться "Apply update from ADB", "Install update from ADB", "Apply update from external storage" (если есть опция выбора источника) или подобным образом.
Выберите этот пункт меню. Обычно для навигации используются аппаратные кнопки громкости, а для подтверждения — кнопка питания.
Устройство перейдёт в режим ожидания команды `adb sideload`. На экране Recovery может появиться уведомление типа "Waiting for sideload_push".
3. Выполнение команды `adb sideload` на компьютере:
На вашем компьютере откройте командную строку или терминал.
Перейдите в директорию, где находится zip-архив, который вы планируете установить.
Выполните команду `adb sideload`, указав путь к файлу:
bash
adb sideload <путь_к_файлу_обновления.zip>
Пример:
bash
adb sideload C:/Users/YourUser/Downloads/update.zip
Процесс загрузки: ADB начнет передавать zip-архив на устройство. Вы увидите индикатор прогресса в терминале на вашем компьютере (например, `Sending 'update.zip' to device... ... XX%`) и на экране Recovery устройства (обычно это тоже полоска прогресса или процент выполнения).
Установка: После завершения передачи файла, Recovery приступит к установке. На экране Recovery будут отображаться сообщения о процессе установки.
4. Завершение и перезагрузка:
После успешной установки, Recovery сообщит об этом (например, "Install from ADB complete").
Вернитесь к главному меню Recovery и выберите опцию "Reboot system now" (Перезагрузить систему сейчас).
9.3. Важные предостережения и советы
Совместимость zip-файла: Крайне важно использовать zip-архив, который предназначен именно для вашей модели устройства и его текущей версии Android. Неправильный файл обновления может привести к "окирпичиванию" (bricking) устройства. Всегда скачивайте файлы из надёжных источников (официальные сайты производителей, проверенные форумы, как XDA Developers).
Root-доступ: Для выполнения `adb sideload` обычно не требуется root-доступ на устройстве, но само устройство должно иметь возможность загрузиться в Recovery.
Резервное копирование: Перед установкой серьёзных обновлений (особенно кастомных прошивок), настоятельно рекомендуется сделать полную резервную копию данных устройства через Recovery, если такая опция доступна.
ADB Server: Убедитесь, что ADB-сервер на компьютере запущен и активен. Иногда может потребоваться перезапуск сервера (`adb kill-server`, `adb start-server`) перед командой `sideload`.
USB-соединение: Стабильное USB-соединение критически важно. Потеря соединения во время передачи файла может нарушить процесс установки.
9.4. Отличия от `adb install`
`adb install`: Используется на уровне ОС Android для установки APK-файлов приложений. Применяется, когда устройство загружено в обычном режиме.
`adb sideload`: Используется в режиме Recovery для установки zip-архивов, которые могут содержать полную прошивку, пакеты GApps, кастомные Recovery или OTA-обновления. Работает на более низком уровне, до загрузки основной ОС.
10. Логирование и мониторинг: все о `logcat`, `top`, `ps`
Эффективная отладка и анализ производительности на Android-устройствах невозможны без умения работать с системными логами и мониторинговыми утилитами. Команды `adb logcat`, `adb shell ps` и `adb shell top` предоставляют детальную информацию о состоянии системы и запущенных процессах, что критически важно для выявления ошибок, утечек памяти и проблем с производительностью.
10.1. Глубокое погружение в `adb logcat`
`adb logcat` — это ваш основной инструмент для получения информации о событиях, происходящих в системе Android и приложениях. Он выводит сообщения, которые приложения и система записывают в кольцевой буфер.
Базовый запуск и вывод:
bash
adb logcat
Эта команда начнёт вывод логов в реальном времени. Сообщения обычно имеют формат: `[приоритет]/[тег(имя_компонента)]: [сообщение]`.
Фильтрация — ключ к эффективности:
По приоритету:
`adb logcat ` — выводит сообщения указанного приоритета и выше.
`adb logcat V` (Verbose, самый низкий уровень)
`adb logcat D` (Debug)
`adb logcat I` (Info)
`adb logcat W` (Warning)
`adb logcat E` (Error)
`adb logcat F` (Fatal)
`adb logcat S` (Silent, отключает все)
Пример: `adb logcat :I` — показать все сообщения уровня Info и выше.
По тегу:
`adb logcat :`
Пример: `adb logcat MyApp:D :S` — показать все Debug-сообщения и выше для тега `MyApp`, отключив остальные (`:S`).
По имени пакета (менее прямой, но иногда полезный):
Можно фильтровать вывод `logcat` по наличию в сообщении имени пакета, хотя это менее точно, чем фильтрация по тегу.
bash
adb logcat | grep com.example.myapp
Управление буфером логов:
`-c`: Очистить буфер логов перед новым запуском.
bash
adb logcat -c
`-d`: Вывести дамп логов (всё, что есть в буфере на момент вызова) и завершить работу.
bash
adb logcat -d > log_dump.txt
Сохранение логов в файл:
Для длительных сессий логирования или для последующего анализа, удобно сохранить вывод в файл.
bash
adb logcat > session_logs.txt
Чтобы остановить запись в файл, нажмите `Ctrl + C` в терминале.
10.2. Мониторинг процессов: `adb shell ps`
Команда `ps` (Process Status) показывает список всех запущенных на устройстве процессов.
Базовый запуск:
bash
adb shell ps
Вывод обычно включает: PID (ID процесса), TTY (терминал, который его запустил), TIME (время CPU, потребленное процессом), COMMAND (команда или имя процесса).
Расширенный вывод:
`adb shell ps -A`: Показать все процессы (аналогично `ps aux` в Linux).
`adb shell ps -l`: Добавить больше деталей (приоритет, владелец и т.д.).
Фильтрация по пакету:
bash
adb shell ps | grep com.example.myapp
Эта команда поможет найти PID конкретного приложения.
10.3. Мониторинг в реальном времени: `adb shell top`
Команда `top` отображает динамическую информацию о системных процессах, отсортированных по использованию ресурсов (CPU, память). Это аналог команды `top` в Linux, но адаптированный для Android.
Запуск:
bash
adb shell top
Вы увидите постоянно обновляемый список процессов, показывающий их загрузку CPU, потребление памяти, PID и другую информацию.
Интерактивность:
`q`: Выход из `top`.
`m`: Сортировка процессов по использованию памяти (Memory).
`P` (заглавная): Сортировка процессов по использованию CPU (Processor).
`k`: Позволяет ввести PID и завершить процесс (требует root-прав).
Полезность: `top` незаменим для быстрого выявления процессов, которые "съедают" ресурсы устройства, вызывая тормоза или перегрев.
10.4. Практические сценарии использования
Диагностика сбоев приложения: Если приложение сбойнуло (crash), `adb logcat` поможет увидеть последние сообщения перед сбоем, что может указать на причину (например, `java.lang.NullPointerException`).
Поиск утечек памяти: Можно запустить приложение, собрать `adb shell dumpsys meminfo ` в разное время, а затем сравнить результаты, чтобы выявить растущее потребление памяти.
Оптимизация производительности: Используя `top` и `ps` вместе с `dumpsys cpuinfo`, можно определить, какие процессы потребляют больше всего ресурсов CPU, и попытаться оптимизировать их работу.
Мониторинг системных событий: `adb logcat` полезен для наблюдения за тем, как система реагирует на изменения (например, подключение к Wi-Fi, запуск другого приложения).
10.5. Советы по работе с логами и мониторингом
Сохраняйте контекст: При сохранении логов в файл, старайтесь очищать буфер (`logcat -c`) перед началом тестового сценария, а также записывайте время начала и конца операций, чтобы легче было анализировать.
Фильтруйте шум: Не пытайтесь сразу анализировать весь вывод `logcat`. Используйте фильтры по тегам, уровням и ключевым словам, чтобы сосредоточиться на необходимой информации.
Используйте `grep`: Для эффективного поиска в больших объёмах вывода (`ps`, `top`, `dumpsys`) комбинируйте команды с `grep`.
Root-доступ: Для доступа к логам и процессам системных приложений и полного использования `top` и `ps`, может потребоваться root-доступ.
11. Безопасность и ответственность: этика и практические советы
Работа с ADB, особенно при использовании продвинутых команд, требует осознанного подхода к безопасности и этике. Неправильное использование ADB может привести к потере данных, нарушению приватности или даже к нарушению законодательства. Этот раздел посвящен лучшим практикам, которые помогут обеспечить безопасность и ответственное использование ADB.
11.1. Безопасность подключения и доступа
Доверие к компьютерам: Всегда разрешайте отладку по USB только для доверенных компьютеров. Если вы использовали устройство на чужом компьютере, удалите этот компьютер из списка доверенных на устройстве (обычно в "Параметрах разработчика" есть опция "Отозвать авторизацию отладчика USB").
Физический доступ: Никогда не оставляйте устройство с включенной отладкой по USB без присмотра, если оно имеет физический доступ. Любой, кто имеет физический доступ к устройству и может подключить его к своему компьютеру, потенциально может получить доступ к вашим данным.
Сеть Wi-Fi: При использовании `adb connect` по Wi-Fi, убедитесь, что и компьютер, и устройство находятся в доверенной и защищённой сети. Использование ADB по Wi-Fi в общественных сетях крайне не рекомендуется.
Обновления Platform-Tools: Всегда используйте последнюю стабильную версию `platform-tools`. Обновления часто содержат исправления безопасности, закрывающие известные уязвимости.
11.2. Работа с данными пользователей и приватность
Конфиденциальность информации: При извлечении логов (`adb logcat`), дампов памяти (`dumpsys meminfo`), баз данных (`adb pull .sqlite`) или скриншотов, будьте крайне осторожны. Эти данные могут содержать чувствительную информацию: персональные данные, пароли, токены аутентификации, конфиденциальные переписки.
Законы о защите данных: В зависимости от региона, могут действовать строгие законы, касающиеся обработки и хранения персональных данных (например, GDPR в Европе). Убедитесь, что ваши действия соответствуют законодательству.
Анонимизация данных: Если результат вашей работы (например, лог-файл) должен быть опубликован или передан третьим лицам, убедитесь, что вся чувствительная информация из него удалена или анонимизирована.
Root-доступ и приватность: Предоставление root-доступа приложениям или использование ADB с root-правами для доступа к данным других приложений может нарушать изолированность процессов и потенциально ставить под угрозу приватность.
11.3. Этические аспекты использования ADB
Несанкционированный доступ: Использование ADB для получения доступа к устройствам без явного согласия владельца является незаконным и неэтичным. ADB предназначен для разработчиков и тестировщиков, работающих с собственными или авторизованными устройствами.
Тестирование безопасности: Если вы проводите тестирование на проникновение (pentesting), убедитесь, что у вас есть официальное разрешение от владельца системы.
Уважение к пользователям: Даже при тестировании вашего собственного приложения, будьте внимательны к данным, которые вы собираете. Не собирайте больше информации, чем необходимо для выполнения конкретной задачи.
11.4. Практические советы по безопасности
Используйте isolated environment: Для работы с конфиденциальными данными или для тестирования потенциально опасных команд, используйте изолированное тестовое устройство или эмулятор.
Минимизируйте права: По возможности, старайтесь выполнять команды ADB без root-прав, если это достаточным для решения задачи.
Сильная аутентификация: Используйте сложные пароли для своих компьютеров и устройств.
Регулярный аудит: Периодически проверяйте список доверенных компьютеров для отладки USB на ваших устройствах.
Автоматизация с осторожностью: При автоматизации задач с помощью скриптов, дважды проверяйте команды, которые вы запускаете, особенно те, что работают с файлами (`rm -r`) или перезагрузкой (`reboot`).
11.5. Что делать в случае утечки данных
Немедленно действуйте: Если вы обнаружили, что конфиденциальная информация была неосторожно раскрыта, немедленно примите меры для её удаления из публичного доступа.
Информируйте пострадавших: Если утечка затронула персональные данные других людей, и законодательство требует этого, информируйте пострадавших и соответствующие органы.
Анализируйте причину: Проведите тщательный анализ, чтобы понять, как произошла утечка, и примите меры для предотвращения подобных инцидентов в будущем.
12. FAQ: Ответы на животрепещущие вопросы по ADB
Этот раздел содержит ответы на наиболее часто задаваемые вопросы, связанные с использованием ADB. Он призван помочь решить распространённые проблемы и развеять сомнения, возникающие у пользователей.
В1: Могу ли я использовать ADB без root доступа?
О1: Да, большая часть команд ADB работает без root-прав. Вы можете устанавливать приложения, копировать файлы во внутреннюю память, просматривать логи, запускать Activity и Service. Однако для доступа к системным разделам файловой системы (например, `/data/` или `/system/`), изменения глобальных настроек системы, или выполнения команд, требующих повышенных привилегий (например, `dumpsys` некоторых служб, `top` с расширенным выводом), root-доступ или специальные разрешения могут быть необходимы.
В2: Как отфильтровать логи на конкретное приложение?
Для фильтрации логов по конкретному приложению, вам нужно знать его тег или пакетоное имя. Самый эффективный способ — использовать фильтр по тегу:
adb logcat YourAppTag:I :Sгде
YourAppTag — это тег, ассоциированный с логами вашего приложения. Если тег неизвестен, можно попытаться фильтровать вывод по наличию части имени пакета:adb logcat | grep com.example.myappно этот метод менее точен.
В3: Как обновить приложение без удаления данных?
Используйте опцию `-r` (replace) при установке APK:
adb install -r /path/to/your/app.apkЭта команда перезапишет существующую установку приложения более новой версией, сохраняя при этом данные пользователя и кэш.
В4: Как узнать пакетное имя установленного приложения?
Используйте команду `pm list packages` с `grep`:
adb shell pm list packages | grep ''Например, для поиска пакета YouTube:
adb shell pm list packages | grep -i youtubeТакже можно использовать флаги `pm list packages -f` (показать путь к APK) или `pm list packages -3` (показать только сторонние пакеты).
В5: Можно ли работать с ADB по Wi‑Fi?
Да, это возможно. Сначала нужно подключить устройство по USB и выполнить команду
adb tcpip (например, adb tcpip 5555). После этого отключите USB и выполните adb connect :. Убедитесь, что устройство и компьютер находятся в одной сети.В6: Как получить логи конкретного сервиса?
Вы можете получить логи конкретного сервиса, если знаете его тег. Используйте фильтрацию `adb logcat` по этому тегу:
adb logcat 'YourServiceTag':D :SЕсли тег неизвестен, анализ логов может потребовать более комплексного подхода, возможно, с поиском по имени класса сервиса в общем выводе.
В7: Как автоматически повторять последовательность команд?
Создайте скрипт на вашем компьютере. Для Windows это может быть `.bat` или `.ps1` файл, а для macOS/Linux — `.sh` файл. В скрипте вы последовательно перечисляете ADB команды, которые хотите выполнить. Затем вы запускаете этот скрипт из терминала.
В8: Что делать, если устройство не отображается в `adb devices`?
Перепроверьте:
1. USB-подключение: Кабель, порт, надежность соединения.
2. Режим разработчика и отладка USB: Включены ли они на устройстве? Разрешена ли отладка для вашего компьютера?
3. Драйверы (Windows): Установлены ли корректные ADB-драйверы для вашего устройства?
4. ADB сервер: Попробуйте перезапустить ADB-сервер:
adb kill-server, затем adb devices.5. Перезагрузка: Перезагрузите устройство и компьютер.
В9: Как узнать, какие пакеты являются системными?
Используйте команду `pm list packages` с флагом `-s`:
adb shell pm list packages -sЭта команда выведет список всех пакетов, которые являются частью системного образа Android.
В10: Нужно ли использовать VPN для маскировки моей активности при работе с ADB?
VPN может помочь скрыть ваш реальный IP-адрес и местоположение при подключении к устройству по Wi-Fi. Однако, если вы используете ADB для удалённого доступа к устройству, ваша личность как пользователя ADB не скрывается (т.е. ADB-сервер на устройстве знает, что вы подключены). VPN не обеспечивает полной анонимности конечного пользователя. Для безопасности лучше использовать доверенные сети и команды `adb connect` только в таких сетях.
В11: Как копировать директорию с устройства на ПК?
ADB напрямую не поддерживает рекурсивное копирование директорий с помощью `adb pull`. Лучший способ — архивировать директорию на устройстве с помощью `tar` и затем скопировать архив.
adb shell "tar -czvf /sdcard/backup.tar.gz /path/to/directory/"adb pull /sdcard/backup.tar.gz ./Затем разархивируйте
backup.tar.gz на вашем компьютере.В12: Как снять скриншот через ADB и сохранить файл на ПК?
Сначала сделайте скриншот на устройстве:
adb shell screencap /sdcard/screenshot.pngЗатем скопируйте его на ПК:
adb pull /sdcard/screenshot.png ./(Предполагается, что вы находитесь в директории, куда хотите сохранить скриншот).
В13: Можно ли работать с эмуляторами через ADB?
Да, конечно. Android Emulator представляет собой виртуальное устройство, которое автоматически регистрируется в ADB. После запуска эмулятора, вы увидите его в списке `adb devices`.
В14: Что делать, если команды ADB работают нестабильно или непредсказуемо?
1. Обновите Platform-Tools: Убедитесь, что используете последнюю версию ADB.
2. Перезапустите ADB сервер:
adb kill-server, затем adb start-server.3. Проверьте подключение: Попробуйте другой USB-порт, кабель, перезагрузите устройство.
4. Проверьте конфликты: Убедитесь, что другие программы (антивирусы, виртуальные машины) не блокируют ADB-порты.
В15: Безопасно ли копировать базу данных приложения?
Копирование базы данных приложения (например, SQLite) через ADB само по себе безопасно, если вы не нарушаете права доступа. Однако, сама база данных может содержать конфиденциальную информацию. Всегда проверяйте содержимое файла перед его дальнейшим использованием или передачей. Работа с данными других пользователей, без их согласия, может быть незаконной.
13. Контрольный список: ваша дорожная карта к Mastery ADB
Этот чек-лист поможет вам быстро пройти ключевые этапы от настройки до выполнения базовых задач и систематизировать ваши знания.
Установка и настройка:
☐ Скачан актуальный `platform-tools` с официального сайта Android Developers.
☐ Папка `platform-tools` распакована в доступное место.
☐ Добавлен путь к `platform-tools` в переменную окружения `PATH` операционной системы.
☐ Проверена установка командой `adb version`.
Подключение устройства:
☐ На Android-устройстве включены "Параметры разработчика".
☐ В "Параметрах разработчика" включена "Отладка по USB".
☐ Разрешена отладка для вашего компьютера на устройстве (при первом подключении).
☐ Проверено подключение командой `adb devices` (статус `device`).
Основные команды:
☐ Выполнена команда `adb devices` для проверки всех подключенных устройств.
☐ Просмотрены системные логи с помощью `adb logcat`.
☐ Выполнена команда `adb shell` для входа в интерактивную оболочку.
☐ Выполнена команда `adb reboot` для перезагрузки устройства.
Работа с файлами:
☐ Скопирован файл на устройство с помощью `adb push`.
☐ Скопирован файл с устройства на компьютер с помощью `adb pull`.
☐ Создана директория и удален файл на устройстве через `adb shell`.
Управление приложениями:
☐ Установлен APK-файл с помощью `adb install`.
☐ Приложение обновлено с помощью `adb install -r`.
☐ Приложение удалено с помощью `adb uninstall`.
☐ Получен список всех пакетов: `adb shell pm list packages`.
☐ Очищены данные приложения: `adb shell pm clear`.
Продвинутое использование (если требуется):
☐ Сделан скриншот командой `adb shell screencap` и скопирован на ПК.
☐ Записано видео с экрана командой `adb shell screenrecord` и скопировано на ПК.
☐ Сымитировано нажатие клавиши: `adb shell input keyevent KEYCODE_HOME`.
☐ Получена информация о батарее: `adb shell dumpsys battery`.
Безопасность:
☐ Убедитесь, что отладка по USB отключена, если не используется.
☐ Используйте `adb devices` для отслеживания подключений.
☐ Не храните приватные данные в логах или дампе без должной обработки.
14. Полезные ресурсы и ссылки
Для дальнейшего углублённого изучения и доступа к актуальной информации, ниже приведены ссылки на официальные ресурсы и сообщества.
Официальная документация Android Developers:
SDK Platform-Tools: https://developer.android.com/studio/releases/platform-tools — Здесь вы всегда найдёте последнюю версию `platform-tools`.
Android Debug Bridge (ADB): https://developer.android.com/tools/adb — Обзорная документация по ADB.
Введение в `Activity Manager`: https://developer.android.com/studio/command-line/adb#am — Информация о командах `am` (Activity Manager).
Введение в `Package Manager`: https://developer.android.com/studio/command-line/adb#pm — Информация о командах `pm` (Package Manager).
Сообщества и форумы:
Stack Overflow (тег `adb`): https://stackoverflow.com/questions/tagged/android-adb — Ресурс с миллионами вопросов и ответов по ADB и Android разработке.
Reddit (r/androiddev, r/android): Для обсуждений, новостей и обмена опытом.
XDA Developers: https://www.xda-developers.com/ — Один из крупнейших форумов по Android, где можно найти прошивки, кастомные Recovery и информацию по глубокой настройке устройств.
Инструменты для анализа:
DB Browser for SQLite: https://sqlitebrowser.org/ — Отличное приложение для анализа SQLite баз данных, скопированных с устройства.
Jadx: https://github.com/skylot/jadx — Декомпилятор Java-кода Android-приложений, который может помочь найти имена компонентов (Activity, Service, Broadcast Receivers), если они неизвестны.