Основы работы с adb
Для начала работы с ADB его следует активировать на устройстве и установить утилиту adb и драйверы на комп. Первая задача выполняется с помощью включения «Отладки по USB» в пункте настроек «Для разработчиков» (если этот пункт скрыт, нажми семь раз на номер сборки в меню «О телефоне»).
Для установки ADB на комп качаем Adb Kit и распаковываем в любую папку (рекомендую использовать названия папок без русских символов). Также скачиваем и устанавливаем драйверы ADB.
Работать с adb нужно из командной строки. Нажимаем Win R и вводим cmd, далее переходим в папку, в которой лежит adb. Для моей папки команда будет следующей:
cd android
Чтобы не проделывать все эти манипуляции каждый раз, можно добавить нужную папку в переменную Path. Для этого необходимо зайти в «Панель управления -> Система -> Дополнительные параметры системы -> Переменные среды», найти переменную Path и добавить в конец строки, через точку с запятой, путь до папки с adb. Теперь после запуска консоли можно сразу вводить необходимые команды.

Проверим наше подключение к телефону с помощью следующей команды (она должна вывести список подключенных устройств):
adb devices
С ADB можно работать через Wi-Fi. Для этого нужны права root и приложение WiFi ADB. Запускаем приложение, жмем переключатель и подсоединяемся к смартфону с помощью команды connect и показанного приложением IP-адреса:
adb connect IP-адрес
Далее работа с ADB ничем не отличается.
Бэкап приложений
В Android есть встроенные функции бэкапа, которые также можно запустить с помощью командной строки. Для этого используется команда adb backup и набор опций:
adb backup [опции] <приложения>
- -f указывает имя создаваемого файла и его расположение на компе. При отсутствии ключа будет создан файл backup.ab в текущем каталоге;
- -apk|-noapk указывает, включать ли в бэкап только данные приложения или сам .apk тоже (по умолчанию не включает);
- -obb|-noobb указывает, включать ли в бэкап расширения .obb для приложений (по умолчанию не включает);
- -shared|-noshared указывает, включать ли в бэкап содержимое приложения на SD-карте (по умолчанию не включает);
- -all указывает на необходимость бэкапа всех установленных приложений;
- -system|-nosystem указывает, включать ли в бэкап системные приложения (по умолчанию включает);
- — перечень пакетов для бэкапа.
Если мы хотим создать бэкап всех несистемных прог, включая сами .apk, в определенное место, то команда будет выглядеть так:
adb backup -f c:androidbackup.ab -apk -all -nosystem
После ввода необходимо подтвердить начало выполнения бэкапа на самом устройстве. Для восстановления полученного бэкапа нужно выполнить соответствующую команду:
adb restore c:androidbackup.ab

Вариант 1 — установка приложения «командная строка»
Если вы используете магазин Google Play, то тогда вам стоит перейти в него и строке поиска прописать следующую фразу — «командная строка» или «терминал» или «консоль«.
Запустите установленное приложение и перед вами окажется командная строка Android!
Недостатком этого решения будет, то что, если у вас нет Root прав, то у вас не будет возможности более полно использовать команды adb, поэтому вам понадобиться использовать и второй вариант, для которого необходим компьютер.
Вариант 2 — компьютер и утилита adb
Для того того чтобы управлять более полно вашим Android смартфоном или планшетом с помощью командной строки с вашего компьютера вам понадобиться выполнить несколько действий:
- Установить драйвер Android на компьютер
- Включить «Отладку по USB«
- Загрузить утилиту ADB или программу ADB RUN для работы с устройствами Android
После чего используя командую строку или программу ADB RUN используем команды ADB и Linux для настройки вашего Android смартфона или планшета.
Где найти и запустить командную строку android?
Есть 2 варианта «добычи» командной строки в Android и оба они вам понадобятся в дальнейшем использование на вашем устройстве.
Запись видео, происходящего на экране устройства
adb shell screenrecord --size 1280x720 --bit-rate 6000000 --time-limit 20 --verbose /sdcard/video.mp4
Данная команда начнет записывать видео с разрешением 1280 x 720 (если не указать, то будет использовано нативное разрешение экрана устройства), с битрейтом 6 Мбит/с, длиной 20 с (если не указать, то будет выставлено максимальное значение 180 с), с показом логов в консоли. Записанное видео будет находиться в /sdcard (файл video.mp4).
Команды терминала
Разобравшись с подготовкой, можно приступать к рассмотрению основных команд Терминала. В то же время стоит учитывать, подавляющее большинство вариантов полностью соответствует Linux и было нами рассмотрено в соответствующей статье на сайте. Кроме того, существует отдельная команда для просмотра всех доступных запросов.
Консоль в консоли
Наряду с упомянутой консолью, которая является DOS-консолью под Windows, в Android существует и своя. Она вызывается через adb shell и представляет собой по сути стандартную Linux-консоль, но с неполным набором команд, расширить который можно, установив из маркета BusyBox. Использовать эту консоль можно двумя способами. В интерактивном режиме она запускается командой
adb shell
В консоли появляется знак $ (далее по тексту этот знак будет означать необходимость ввода предварительной команды adb shell), и после этого можно вводить серию команд, получая после каждой отклик. Второй способ — если необходимо ввести только одну команду, можно писать ее подряд за adb shell.
В шелле работают стандартные команды для копирования, перемещения и удаления файлов: cp, mv и rm. Можно менять каталоги (cd) и смотреть их содержимое (ls). Кроме стандартных Linux-команд, о которых можно узнать из любого справочника, в Android есть несколько своих специализированных инструментов, но, чтобы использовать некоторые из них, придется получить на смартфоне права root, а после запуска консоли выполнять команду su:
adb shell
su
Это нужно делать, если в ответ на какую-либо команду ты видишь строку, похожую на «access denied» или «are you root?». В случае успеха знак $ сменится на #.


Помогла ли вам эта статья?
ДАНЕТ
Продвинутый уровень
В одной из своих статей я показывал, как можно доставать информацию из баз данных различных приложений. Ну а теперь посмотрим, как проделать это прямо из консоли, не качая базы на комп и не устанавливая на устройство просмотрщики баз. Для этого используется команда sqlite3. Выведем на экран историю браузера Chrome:
$ cd /data/data/com.android.chrome
$ su
# sqlite3 app_chrome/Default/History
> .schema urls
> select * from urls where url like "%android%";
Системные утилиты
Кратко остановлюсь на нескольких полезных командах (работоспособность некоторых, однако, может зависеть от версии прошивки и модели телефона).
Изменение DPI. Не требует root и работает на Android 5.0 . Стандартное значение для Nexus 5 — 480. При значении 420 на рабочем столе стокового лаунчера помещается пять иконок в ряд вместо четырех:
$ wm density 420 && adb reboot
Подключение /system в режиме записи. Для части команд, которые меняют системные файлы, необходимо сначала перемонтировать раздел /system на запись. Это необходимо в том числе при удалении системных приложений. Перемонтирование выполняется следующей командой:
$ su
# mount -o rw,remount /system
Мягкая перезагрузка:
$ setprop ctl.restart zygote
Перевод смартфона в режим энергосбережения Doze (Android M ):
$ dumpsys battery unplug
$ dumpsys deviceidle step
…повторяем действия, пока не увидим idle.
Батарейка в процентах (Android 4.4 ):
$ content insert --uri content://settings/system --bind name:s:status_bar_show_battery_percent --bind value:i:1
Снятие графического ключа, pin, facelock
Допустим, ты забыл PIN или не совсем трезвым поставил графический ключ, ну или друзья пошутили и поставили распознавание по лицу… Так вот, если устройство по какой-то причине заблокировано, то блокировку можно снять (при условии включенной отладки по USB) через ту же консоль:
adb shell
$ su
# cd /data/system
# rm *.key
Команда удалит все пароли и графические ключи. Сами файлы в зависимости от прошивки и модели устройства могут быть: gesture.key, password.key, cm_gesture.key, personalpattern.key, personalbackuppin.key. Также за блокировку отвечают файлы locksettings.db, locksettings.db-shm, locksettings.db-wal.
После этого достаточно перегрузить устройство и ввести любой ключ, пароль. Если это не помогает, можно попробовать следующее:
adb shell
$ cd /data/data/com.android.providers.settings/databases
$ sqlite3 settings.db
> update system set value=0 where name='lock_pattern_autolock';
> update system set value=0 where name='lockscreen.lockedoutpermanently';
Снятие логов
Очень часто, когда для решения проблемы пользователь обращается на форум устройства, там его просят скинуть логи работы телефона или приложения. Отвечают за это две утилиты: logcat и dmesg. Первая позволяет увидеть системные сообщения в реальном времени, а вторая постфактум покажет работу ядра, включая сообщения ошибок ввода-вывода, загрузку драйверов, подключение USB-устройств и так далее. Полный лог можно вывести сразу в файл следующей командой:
adb logcat > logcat.txt
Все события будут записываться непрерывно по мере работы устройства. Остановить запись можно стандартной комбинацией Ctrl C. Однако в лог попадает вся информация, что сильно затрудняет поиск нужной. Поэтому для работы обычно используют набор ключей и фильтров, подходящих к конкретной ситуации.
adb logcat *:E
После этого можно запускать проблемное приложение и смотреть, что именно вызывает ошибку. Также поддерживается вывод информации из альтернативных буферов. Этим способом можно посмотреть, что приложения делают в фоне и, например, какие события происходят после включения экрана:
adb logcat -b events

Создание скриншота
Выполняется одной строчкой:
adb shell screencap /sdcard/screen.png
После этого картинку нужно выдернуть из устройства командой adb pull:
adb pull /sdcard/screen.png
В recovery скриншот можно сделать следующей командой:
adb pull /dev/graphics/fb0
Управление приложениями
Для управления приложениями используются две команды: pm (package manager) — менеджер пакетов и am (activity manager) — менеджер активностей. У данных команд есть немало ключей, которые можно посмотреть на портале разработчиков. Остановимся на некоторых.
Для начала получим список установленных на устройстве приложений в виде названий пакетов, которые пригодятся позже:
$ pm list packages
Добавив в конец -s, ты увидишь только системные приложения, -3 — только сторонние, -f покажет пути установки пакетов, а -d — отключенные приложения. Далее, зная названия пакетов, можно совершать над ними различные насильственные действия :). Например, отключить ненужный календарь:
$ pm disable com.google.android.calendar
Очистить данные:
$ pm clear com.dropbox.android
Ну а совсем удалить можно так:
$ pm uninstall com.dropbox.android
Для использования activity manager понадобятся более глубокие знания структуры Android и понимание того, что такое Avtivity и Intent. Это позволит тебе запускать различные приложения, например браузер или настройки:
$ am start -n com.android.browser/.BrowserActivity
$ am start -n com.android.settings/.Settings
Завершить работу приложения можно противоположной командой:
$ am kill com.android.browser
Ну а убить все запущенные приложения — такой командой:
$ am kill-all
Тот же activity manager поможет сделать звонок на нужный номер телефона:
$ am start -a android.intent.action.CALL tel:123
А так можно открыть страницу в браузере:
Установка программ
ADB можно использовать для установки приложений без необходимости копировать их на смартфон. Достаточно выполнить такую команду:
adb install d:/downloads/имя_файла.apk
В команду также можно добавить дополнительные ключи. Полезными будут -е — переустановить приложение с сохранением данных и -d — установить версию меньше текущей.
Программы можно и удалять, но для этого нужно знать название пакета (как узнать, расскажу чуть позже). На примере игры Angry Birds Seasons команда будет выглядеть так:
adb uninstall com.rovio.angrybirdsseasons
Выводы
Как видишь, с помощью ADB можно сделать много интересного. И чем больше пользуешься консолью, тем быстрее можно выполнить некоторые действия без установки дополнительного софта на устройство. Надеюсь, данная статья помогла разобраться с ADB и подтолкнула к чтению документации и поиску новых полезных команд.