Работа с Android-устройством по ADB(Android Debug Bridge) и в режиме FastBoot


Работа с Android-устройством по ADB(Android Debug Bridge) и в режиме FastBoot

18.png

ADB (Android Debug Bridge - Отладочный мост Android) - консольное приложение для PC, с помощью которого производится отладка Android устройств. Работает по принципу клиент-сервер.
Поставляется "adb.exe" в составе инструментария разработчика Android (Android SDK), который, в свою очередь входит в состав "Android Studio". Для того, чтобы не устанавливать громоздкий SDK в нижеприведенной инструкции предлагается минимальный комплект ( спасибо уважаемому @psihop) для работы с устройством по ADB.
При первом запуске "adb.exe" с любой командой создается сервер в виде системной службы (демона), которая будет прослушивать все команды, посылаемые на порт 5037.

Основные возможности:

  • Вывод списка подключенных к ПК устройств, работающих по протоколу ADB.
  • Просмотр логов работы Android ОС.
  • Копирование файлов с/на аппарат.
  • Установка/удаление приложений.
  • Создание и восстановление пользовательских данных.
  • Выполнение unix-команд на устройстве. Запуск скриптов.
  • Прошивка устройства.
  • Управление сетевыми параметрами.
  • ...

Установка и настройка ADB на ПК:

  • Скачать и установить как обычную программу драйверы: Android_adb-USB_UnifL_Driver_v1.02.zip (Более новая версия может быть в отдельной теме)
  • Скачать комплект для работы с устройством: ADB.rar
  • Распаковать архив в произвольную папку с латинским названием. Например: "c:\adb\". Полный путь до файлов комплекта НЕ должен содержать пробелов, спецсимволов, русских букв и т.п. В данном примере в папке "c:\adb\" должны быть 5 файлов:
    • "adb.exe" - непосредственно сам ADB, с которым будем работать.
    • "AdbWinApi.dll" - библиотека для работы ADB.
    • "AdbWinUsbApi.dll" - библиотека для работы ADB.
    • "fastboot.exe" - управление устройством переведенным в режим fastboot.
    • "START.exe" - программа для облегченного запуска ADB.

Установка и настройка ADB на аппарате:

  • Включить меню разработчика.
  • Включить отладку по USB.
  • Система Windows автоматически установит драйверы на новое устройство.
    Спойлер

    Снимок.PNG

     

  • Запустить "c:\adb\START.exe", запустится командная строка Windows (cmd.exe - обработчик команд Windows).
  • В окне командной строки ввести: "adb devices" и нажать Enter. Если все настроено верно, будет выведен ответ:
    adb devices
    List of devices attached
    HT16GV402012    device
  • Если что-то настроено неверно, то в списке подключенных устройств (List of devices attached) будет пусто.

Список команд ADB (Полный список команд можно получить, изучив исходники):

Спойлер
  • Отправка команды только на устройство подключенное через USB. Внимание: Выдаст ошибку, если подключено больше одного устройства.
    adb -d
  • Отправка команды на устройство в эмуляторе. Внимание: Выдаст ошибку, если подключено больше одного эмулятора.
    adb -e
  • Отправка команды на устройство с указанным серийным номером.
    adb -s <серийный_номер_устройства>
  • Отправка команды на устройство с указанным именем. Если ключ -p не указан, используется значение переменной ANDROID_PRODUCT_OUT.
    adb -p <имя устройства или путь>
  • Список всех подсоединенных устройств.
    adb devices
  • Подключится к устройству Android по протоколу TCP/IP через порт 5555 (по умолчанию, если не задан).
    adb connect <хост>[:<порт>]
  • Отключится от устройства Android подключенного через TCP/IP порт 5555 (по умолчанию, если не задан). Если не задан ни один параметр, отключиться от всех активных соединений.
    adb disconnect [<хост>[:<порт>]]
  • Копировать файл/папку ПК->Android-устройство.
    adb push <путь на PC> <путь на андроид>
  • Копировать файл/папку Android-устройство->ПК.
    adb pull <путь на андроид> [<путь на PC>]
  • Копировать PC->Android-устройство только новые файлы. Ключи: Не копировать, только создать список -l.
    adb sync [<каталог>]
  • Запуск упрощенного unix shell. Примеры приведены в следующем спойлере.
    adb shell <команда из списка shell>
  • Отправить команду в консоль эмулятора.
    adb emu <команда>
  • Отправить приложение на устройство и установить его. 
    adb install [-l] [-r] [-s] <название_приложения.apk>
    Например: adb install c:/adb/app/autostarts.apk
    Ключи: Блокировка приложения -l. Переустановить приложение, с сохранением данных -r. Установить приложение на карту памяти -s.
  • Удаление приложения с устройства.
    adb uninstall [-k] <название_приложения.apk>
    Ключи: Не удалять сохраненные данные приложения и пользователя -k.
  • Ожидать подключения устройства.
    adb wait-for-device
  • Запустить службу/демон.
    adb start-server
  • Остановить службу/демон.
    adb kill-server
  • Получить статус устройства.
    adb get-state
    Значения статусов: offline (выключен), bootloader (режим загрузчика), device (режим штатной работы Android).
  • Получить серийный номер.
    adb get-serialno
  • Непрерывный опрос состояния.
    adb status-window
  • Перемонтировать для записи. Требуется для работы скриптов, которые изменяют данные на разделах system, data, cache и т.д.
    adb remount
  • Перезагрузка в режим bootloader.
    adb reboot bootloader
  • Перезагрузка в режим recovery.
    adb reboot recovery
  • Перезапуск демона с правами root.
    adb root
  • Перезапуск демона, прослушивающего USB.
    adb usb
  • Перезапуск демона, прослушивающего порт TCP.
    adb tcpip <порт>
  • Запуск службы через USB. Параметры: defaultroute debug dump local notty usepeerdns
    adb ppp <tty> [параметры]

Примеры работы по ADB:

Спойлер

Ниже перечисленные примеры можно вводить в командную строку. Для удобства их можно вписать в файл-сценария .cmd или .bat.

Удаление папки со всеми вложенными каталогами и файлами. Например всей музыки.


adb shell rm -r /sdcard/music

Информация о разделах внутренней памяти аппарата.


adb shell cat /proc/mtd

Пример вывода:


dev: size erasesize name
mtd0: 000a0000 00020000 "misc"
mtd1: 00420000 00020000 "recovery"
mtd2: 002c0000 00020000 "boot"
mtd3: 0fa00000 00020000 "system"
mtd4: 02800000 00020000 "cache"
mtd5: 0af20000 00020000 "userdata"

Информация о точках монтирования, общем и свободном пространстве на разделах.


adb shell df

Пример вывода:


Filesystem 1K-blocks Used Available Use% Mounted on
tmpfs 160664 0 160664 0% /dev
/dev/block/mtdblock4 40960 1292 39668 3% /cache
/dev/block/mtdblock3 256000 146888 109112 57% /system
/dev/block/mtdblock5 179328 125728 53600 70% /data
/dev/block/mmcblk0p1 15521280 10056880 5464400 65% /sdcard

Информация о разделении ROM-памяти на разделы.


adb shell cat /proc/partitions

Резервная копия определенного раздела.


adb shell su -c dd if=/dev/block/mmcblk0p9 of=/sdcard/factoryfs.img bs=4096

Монтирование разделов /system и /data в режиме mod-recovery.


adb shell mount -o rw /dev/block/mtdblock3 /system
adb shell mount -o rw /dev/block/mtdblock5 /data

 

FastBoot - консольное приложение для ПК. Используется как правило для прошивки и аварийного восстановления работоспособности аппарата.

Список команд fastboot:

Спойлер
  • Список присоединенных устройств в режиме fastboot.
    fastboot devices
  • Прошивка файла .img в раздел устройства.
    fastboot flash <раздел> <файл>
  • Стирание раздела. Разделы: boot, recovery, system, userdata, radio.
    fastboot erase <раздел>
  • Прошивка из файла имя_файла.zip
    fastboot update <имя_файла.zip>
  • Прошивка boot + recovery + system.
    fastboot flashall
  • Показать переменные bootloader.
    fastboot getvar <имя_переменной>
  • Отправить ядро (kernel) на устройство и запустить его из оперативной памяти, без прошивки.
    fastboot boot <kernel> [<ramdisk>]
  • Отправить ядро (kernel) на устройство и прошить его.
    fastboot flash:raw boot <kernel> [<ramdisk>]
  • Продолжить загрузку.
    fastboot continue
  • Перезагрузить аппарат.
    fastboot reboot
  • Перезагрузить аппарат в режим bootloader.
    fastboot reboot-bootloader

Перед командами "fastboot" можно использовать ключи:

  • -w стереть данные пользователя и кэш
  • -s <серийный номер> Указать серийный номер устройства.
  • -p <product> Указать название устройства.
  • -c <cmdline> Переопределить kernel commandline.
  • -i <vendor id> Указать вручную USB vendor id.
  • -b <base_addr> Указать в ручную базовый адрес kernel.
  • -n <page size> Указать размер страниц nand. По умолчанию 2048.

Примеры работы в режиме fastboot:

Спойлер

Прошивка модема. Переименовать файл модема в radio.img и положить его в папку C:\ADB\.


@echo off
fastboot reboot-bootloader
echo После загрузки bootloader нажмите любую клавишу...
pause
fastboot flash radio radio.img
fastboot reboot

Восстановление прошивки из резервной копии.


@echo off
fastboot reboot-bootloader
echo После загрузки bootloader нажмите любую клавишу...
pause
fastboot flash userdata data.img
fastboot flash system system.img
fastboot flash boot boot.img
fastboot reboot

Прошивка recovery. Распаковать образ recovery. Переименовать файл в recovery.img и положить его в папку C:\ADB\.


@echo off
fastboot reboot-bootloader
echo После загрузки bootloader нажмите любую клавишу...
pause
fastboot flash recovery recovery.img
fastboot reboot

Прошивка загрузочного раздела. Положить boot.img в папку C:\ADB\


@echo off
fastboot reboot-bootloader
echo После загрузки bootloader нажмите любую клавишу...
pause
fastboot flash boot boot.img
fastboot reboot

10 пользователям понравился пост