» F.A.Q.

Android Debug Bridge. Часть 2: Команды ADB

Во второй статье цикла, посвященного многофункциональной утилите Android Debug Bridge мы разберемся с командами, которые, собственно, поддерживаются ею. Их список достаточно обширный и позволяет выполнять самые разнообразные функции.

Как мы уже говорили в первом материале из цикла статей по Android Debug Bridge, работа с утилитой происходит через командную строку, так что для выполнения команд её, соответственно, нужно вызвать (проще всего это сделать сочетанием клавиш Win + R). Что ж, приступим.

adb shell cat /proc/partitions

            Выводит на экран информацию по имеющимся блокам.

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

Выполняет копирование блока. Задавать необходимо сам блок и выходящее имя.

            adb shell rm /data/system/gesture.key

Разблокирует от графического ключа при блокировке Android-девайса. После введения команды можно ввести любой жест.

            adb -d

Команда будет послана только на устройство, которое подключено к компьютеру через USB. Если подключено больше одного устройство, выдаст ошибку. 

            adb –e

            Команда будет послана на устройство, запущенное в эмуляторе. Выдаст ошибку, если одновременно запущено больше одного эмулятора.

adb -s <серийный номер >

            Команда будет послана на устройство с указанным серийным номером.

            adb -p <имя устройства/путь к нему>

            Команда будет послана на девайс с указанным именем. Примечание: если не указывать ключ –p, то используется значение переменной ANDROID_PRODUCT_OUT.

            adb devices

            Выводит на экран список всех подключенных к компьютеру устройств.

            adb connect <хост>(:<порт>)

            Производит подключение к указанному хосту посредством протокола TCP/IP. Порт можно не указывать, тогда будет использован порт по умолчанию – 5555.

adb disconnect <хост>(:<порт>)

            Производит отключение от указанного хоста, подключенного посредством протокола TCP/IP. Порт можно не указывать, тогда будет использован порт по умолчанию – 5555. Если не задать ни один из параметров, то будет произведено отключение от всех активных в текущий момент соединений.

            adb push <путь на ПК> <путь на Android-девайсе>

            Производит копирование файла или папки с компьютера на Android-устройство.

adb pull <путь на Android-девайсе> <путь на ПК>

            Производит копирование файла или папки с Android-устройства на компьютер. Если не задан второй параметр, то копирование производится в папку ADB.

            adb sync [<папка>]

            Производит копирование на компьютер только новых файлов. Если ввести ключ l, то копирование производится не будет, будет создан только список новых файлов.

adb shell

            Запускает несколько упрощенный UNIX Shell.

            adb shell <команда из shell>

            Выполнение команды посредством Shell. Например:

adb shell rm -r /system/sd/app

            Удаление приложений, которые были установлены на карту памяти.

adb shell rm -r /system/sd/app-private

            Удаление приложений, которые были установлены на карту памяти в раздел appprivate.

            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

adb emu <указание команды>

Команда будет послана в консоль запущенного эмулятора, например:

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

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

Выполняется монтирование разделов /systemи /data с использованием режима ClockworkMod Recovery.

adb install [-l] [-r] [-s] <приложение.apk>

Указанное приложение будет отправлено на Android-девайс и будет произведена его установка, например команда adb install C:/adb/app/test.apk выполнит установку test.apk, который находится в директории /adb/app/ на диске C:/. Ключи к данной команде:

-l – выполняет блокировку приложения.

-r – приложение будет переустановлено с сохранением данных.

-s – приложение будет установлено на карту памяти.

adb uninstall [-k] <приложение.apk>

Производит деинсталляцию (удаление) указанного приложения. Если использовать ключ k, то приложение будет деинсталлировано без удаления данных пользователя.

adb wait-for-device

Ожидание подключения Android-девайса.

adb start-server

Запуск службы (демона).

adb kill-server

Остановка службы (демона).

adb get-state

Выводит текущий статус подключенного устройства:

offline – девайс выключен.

bootloader – девайс в режиме предварительной загрузки (бутлоадер).

device – девайс работает.

adb get-serialno

Выводит на экран серийный номер подключенного устройства.

adb status-window

Производит непрерывный опрос состояния подключенного устройства.

adb remount

Выполняет перемонтирование подключенного Android-девайса для последующей записи. Команда необходима для работы скриптов, которые изменяют данные на устройстве.

adb reboot bootloader

Перезагрузка подключенного Android-устройства в режиме булоадера (загрузчика).

adb reboot recovery

Перезагрузка подключенного Android-устройства в режиме Recovery.

adb root

Выполняется перезапуск службы (демона) с Root-правами.

adb usb

Выполняется перезапуск службы (демона) с «прослушиванием» USB.

adb tcpip <порт>

Выполняется перезапуск службы (демона) с «прослушиванием» указанного порта.

adb ppp <tty> [параметры]

Запуск службы с указанными параметрами через USB. Допустимые параметры: defaultroute dump debug notty usepeerdns local.

adb logcat [<Ключи>] [<фильтр>]

Используется для отладки. Выводит записи логов с отладочной информацией подключенного Android-устройства. logcatдопустимо использовать с машины разработки ($ adblogcat) или через удаленный Shell (# logcat).

Каждое сообщение в логе Android-девайса имеет свой тэг и свой приоритет. Тэг – строка, которая указывает на компонент системы, отправивший сообщение (к примеру, View – для системы view и так далее). Приоритет может иметь одно из следующих значений (от наименьшего к наибольшему):

V – Verbose (самый низкий приоритет).

D – Debug

I – Info

W – Warning

EError

F – Fatal

S – Silent (Самый высокий приоритет, при котором не выводится ничего).

Чтобы получить список используемых в системе тэгов вместе с их приоритетами, можно запустить logcat. При этом в первых двух столбцах каждого выведенного сообщения из системного лога будут указаны его приоритет и тэг. Например:

I/ActivityManager( 585): Starting activity: Intent { action=android.intent.action…} 

Чтобы уменьшить вывод лога до не таких больших размеров, можно использовать выражение фильтра, то есть с командой logcat использовать необходимые комбинации тэга и приоритета, и тогда все сообщения, которые не подходят под запрос, не будут выводиться. Фильтр выражается как <тэг>:<приоритет>, где <тэг>, соответственно, указывает на нужный тэг, а <приоритет> — на минимальный уровень приоритета для указанного тэга. В лог записываются сообщения с выбранным тэгом и приоритетом на указанном уровне или выше него. Количество пар <тэг>:<приоритет> не ограничено в одном выражении фильтра, для их разделения используется пробел.

Разберем на примере, какие сообщения будут выведены в лог:

adb logcat TestTag:I TestApp:D *:S

Данная команда выведет все сообщения с тэгом TestTag, которые имеют приоритет «Info» или выше, а также сообщения с тэгомTestApp с приоритетом «Debug» или выше. Последний же элемент *:S устанавливает самый высокий «Silent» приоритет для всех остальных тэгов, по сути препятствуя их выведению. Таким образом, выводиться будут только сообщения для тэгов TestTagи TestApp. *:S– самый удобный способ вывода только сообщений, соответствующих указанным фильтрам.

Приведем еще один пример:

adb logcat *:W

Данная команда выведет все сообщения, которые имеют приоритет «Warning» или выше для любых тэгов.

В том случае, если команда logcat выполняется на машине разработчика, а не через удаленный Shell, можно установить значение фильтра по умолчанию, задав переменную ANDROID_LOG_TAGS следующим образом:

export ANDROID_LOG_TAGS=»TestTag:I TestApp:D *:S»

Заданная переменная окружения ANDROID_LOG_TAGS не будет работать через эмулятор или на устройстве, если logcat будет использоваться в удаленном Shell или через adb shell logcat. Данная команда export выполняется только в UNIX-системах, и не работоспособна в Windows.

Сообщения лога, помимо тэга и приоритета, содержат в себе несколько полей с метаданными. Формат вывода сообщений можно задать таким образом, чтобы изменять показ полей метаданных. Для этого используется параметр vс указанием одного из следующих форматов вывода:

brief – отображает тэг, приоритет и PID процесса (формат вывода по умолчанию).

process – отображение только PID.

tag – вывод только приоритета и тэга.

thread – отображает только процесс:поток и тэг с приоритетом.

raw – выводит необработанное сообщение, без отображения полей с метаданными.

time – отображает дату, время вызова, тэг с приоритетом, и PID процесса.

long – отображает все поля с метаданными, а также отдельно сообщения с пустыми строками.

Для примера:

adb logcat -v thread

Команда выведет сообщения в формате thread.

Система логов Android имеет несколько кольцевых буферов, где содержатся логии сообщений, так что не все сообщения отправляются в основной буфер. Для того, чтобы отобразить дополнительные сообщения лога, используется параметр b. Последний позволяет просмотреть один из альтернативных буферов:

radio – отображение буфера с сообщениями, которые связаны с телефонией или радиомодулем.

events – отображение буфера с сообщениями, которые связаны с событиями.

main – отображение основного буфера (используется по умолчанию).

Через adb также можно просмотреть stdout и stderr. По умолчанию вывод stdout и stderr идёт в /dev/null/, то есть происходит их удаление. В процессах, выполняемых в виртуальной машине Dalvik, может быть осуществлена запись копии вывода в лог. В таком случае система записывает сообщения в лог с тэгами stdout и stderr с приоритетом I. Чтобы перенаправить вывод, необходимо остановить эмулятор или Android-устройство, и выполнить Shell setprop, чтобы включить перенаправление вывода. Пример, как это сделать:

$ adb shell stop

$ adb shell setprop log.redirect-stdio true

$ adb shell start

Указанная настройка будет сохранена в системе до тех пор, пока работает эмулятор или устройство. Для использования данной настройки по умолчанию, вышеописанную команду следует добавить в /data/local.prop.

Полный список параметров команды logcat:

-b <buffer> — загрузка альтернативного буфера лога для последующего просмотра, такого как event или radio. По умолчанию используется основной буфер.

-c – сброс (очистка) лога и выход.

-d – вывод лога на экран и выход.

-f <file> — запись лога в указанный файл <file>. По умолчанию запись происходит в stdout.

-g – вывод размера указанного буфера с последующим выходом.

-n <n> — установка максимального количества ротаций лога (количества хранимых сжатых фрагментов лога) <n>. По умолчанию значение равно 4. Для работы требуется параметр -r.

-r <kbytes> — выполнение ротации каждые <kbytes> вывода (разделять лог на фрагменты по указанному числу <kbytes>). По умолчанию значение равно 16. Для работы требуется параметр -f.

-s – установка «Silent» как фильтр по умолчанию.

-v <format> — установка формата вывода сообщений лога. По умолчанию установлено значение «brief».

На этом мы закончили с командами, которые может выполнять ADB. В следующей статье мы разберемся с командами fastboot.

Alekse
2013-04-27 11:55:11
где скачать&nbsp;
saintanger69
2013-04-27 12:51:52
Android SDK&nbsp;<div>либо&nbsp;воспользоватся&nbsp;нашей нашей надстройкой для ADB - программа <a href="http://http://fans-android.com/adb-run-legkoe-upravlenie-android-sredstvami-adb/" title="" target="" rel="nofollow">ADB RUN</a></div>