Консольный Android: 50 команд ADB, о которых должен знать каждый
Содержание
Управлять всеми аспектами мобильных устройств с операционной системой Android — памятью, файловой системой, установкой и удалением программ и т.д. — можно не только на самом мобильном устройстве, но и с персонального компьютера, подключив к нему через USB-шнур смартфон или планшет. Для этого к мобильному устройству часто прилагается специальное фирменное ПО.
Но не всегда такое фирменное ПО прилагается, например, для пользователей Linux/FreeBSD. Поэтому желательно хотя бы иметь представление об универсальном интерфейсе доступа к устройствам Android с персонального компьютера, который называется Android Debug Bridge (отладочный мост Android) или кратко — ADB.
Реализован этот универсальный интерфейс в виде консольной утилиты под одноимённым названием adb , которая имеется для всех популярных операционных систем и запускается из командной строки. Более подробно о том с чем её готовят и описано под катом.
Введение в ADB
Программа adb устанавливает связь между устройством и компьютером, позволяет посылать команды на устройство через USB-соединение и выполнять различные манипуляции с системой Android. Продвинутые пользователи сталкивались с ней при получении прав root , установке ClockworkMod Recovery.
Утилита является составной частью Android SDK, предназначенного для разработчиков. Также эту утилиту производитель смартфона может поставлять вместе с драйверами конкретного мобильного устройства. Но более подробно об установке утилиты чуть ниже.
Сначала перечислим основные возможности интерфейса ADB:
- просмотр подключенных к ПК устройств Android;
- просмотр лога системы Android;
- копирование файлов с/на устройство Android;
- установка и удаление приложений на устройстве Android;
- очищать раздел data на устройстве Android;
- запускать различные скрипты управления устройством Android.
Итак, повторюсь, что Android Debug Bridge (adb) — это универсальный инструмент, позволяющий управлять эмуляторами устройств и самими устройствами на базе Android. ADB — клиент-серверное приложение состоящее из 3-ех компонентов:
- Клиент — запускается на машине разработчика. Клиент можно запустить из командной строки при помощи команд посылаемых adb. Другие инструменты Android вроде плагина ADT и DDMS тоже создают adb-клиенты;
- Сервер — запускается на машине разработчика в виде фонового процесса. Сервер управляет соединениями между клиентами и adb-сервисом запущенным на эмуляторе или устройстве;
- Сервис — фоновый процесс, который запускается на каждом эмуляторе или устройстве.
Инструмент adb можно найти в директории /platform-tools/ .
Клиент при запуске сначала проверяет, запущен ли adb-сервер. Если сервер не запущен, то клиент запускает его. Сервер при старте привязывается к 5037 TCP порту и слушает команды, посылаемые adb-клиентами. Все adb-клиенты используют 5037 порт для связи с adb-сервером. Затем сервер устанавливает соединения со всеми работающими эмуляторами/устройствами.
Сервер находит их путем сканирования нечетных портов в диапазоне Если сервер находит adb-сервис на одном из этих портов, то устанавливает соединение с найденным портом. Обратим внимание на то, что каждый эмулятор/устройство использует пару, следующих друг за другом, портов: четный порт — для соединения с консолью, нечетный порт — для adb-соединений.
Emulator 1, console: 5554
Emulator 1, adb: 5555
Emulator 2, console: 5556
Emulator 2, adb: 5557
Как только сервер установил соединения со всеми эмуляторами, можно использовать adb-команды для контроля и доступа к каждому из этих эмуляторов. Поскольку сервер управляет соединениями со всеми эмуляторами/устройствами и обрабатывает команды от нескольких adb-клиентов, можно управлять любым эмулятором/устройством из любого клиента (или скрипта).
На всякий случай обратим внимание, что при разработке Android-приложений в среде Eclipse с установленным плагином ADT — не нужен доступ к adb из командной строки. Плагин ADT обеспечивает прозрачную интеграцию adb в Eclipse. Однако можно использовать adb и напрямую, например, для отладки.
Подготовка к работе
Для начала нужно установить саму консольную утилиту adb.
Существует несколько вариантов её получения:
- Обычно в системах Windows она может неявно установиться вместе с фирменными драйверами смартфона или планшета. Искать её обычно следует в папке Program Files в каталоге, имеющем название марки смартфона.
- Универсальным способом получения adb для пользователей всех операционных систем является установка утилиты через менеджер Android SDK.
Для этого нужно скачать сам архив Android SDK и распаковать. Пользователям Windows в корневой папке архива нужно запустить SDK Manager.exe . Пользователям Linux в папке tools архива SDK нужно запустить исполняемый файл android . (В системе также должна быть установлена Java).
В результате запустится менеджер компонентов Android SDK, через который нужно загрузить компоненты «Android SDK Tools» и «Android SDK Platform tools». Утилита adb должна появиться в каталоге platform-tools в папке разархивированного Android SDK;
- Пользователи Ubuntu 12.10+ могут загрузить нужные утилиты прямо через менеджер пакетов системы. Утилита adb уже имеется в официальном репозитории этого дистрибутива. Установить нужно пакеты android-tools-adb и android-tools-fastboot .
Для полноценной работы в Windows необходимо установить еще и драйвера конкретного устройства для поддержки интерфейса ADB по USB. Обычно Windows Vista и Windows 7 сами находят этот драйвер в Сети. После установки USB-драйверов для Windows в диспетчере устройств вы должны наблюдать: My Computer — Android Phone — Android ADB Interface. Если у вас вместо Android ADB Interface после подключения устройства светится желтый вопросительный знак, значит, драйвера установились некорректно.
Для пользователей же Linux/FreeBSD драйвера устанавливать не нужно, но надо написать правило для udev . Ниже приведена последовательность создания правила на примере Ubuntu.
Для этого сначала нужно узнать значения переменных idVendor и idProduct вашего мобильного устройств. Сделать это можно при помощи команды lsusb в терминале, подключив устройство через USB-шнур, в результате чего должна отобразиться информация примерно такого вида:
Bus 002 Device 006: ID 12d1:1038 Huawei Technologies Co., Ltd.
Здесь idVendor — это шестнадцатеричные цифры после ID и до двоеточия. IdProduct — это следующие четыре цифры после двоеточия.
После этого создаём файл /etc/udev/rules.d/51-android.rules с правами chmod 644 и со следующим содержанием (подставлять свои значения ID и пользователя):
SUBSYSTEMS==»usb», ATTRS==»12d1″, ATTRS ==»1038″, MODE=»0666″, OWNER=»пользователь»
$ sudo /etc/init.d/udev reload
В первом и втором случае получения adb очень желательно настроить переменные окружения, чтобы не вводить при запуске в консоли полный путь к установленной утилите. Настройка персонального компьютера на этом закончена. На мобильном устройстве должна быть включена отладка по USB: «Настройки — Приложения — Разработка — Отладка по USB». Подключите ваш телефон через кабель USB и НЕ МОНТИРУЙТЕ как SD!
Вот теперь можно приступать к работе с adb.
Работа с ADB
Рассмотрим некоторые команды adb. Открываем консоль и запускаем команду:
Данная команда выведет список устройств, подключенных к ПК. Должно появиться что-то вроде:
List of devices attached
4CA94Dxxxxx device
Если же утилита adb на запрос adb devices выдала что-то вроде » . no permissions «, необходимо правильно настроить права.
Теперь просто перезагрузка устройства:
Быстрая перезагрузка устройства в режим Recovery:
$ adb reboot recovery
Установка с компьютера пакета apk :
Просмотреть лог работы устройства:
После чего вы увидите динамический вывод системных сообщений Android. Если производить с устройством какие-либо манипуляции, это тут же будет отображаться через вывод соответствующих сообщений. Выход из режима отладки через комбинацию клавиш Ctrl+C.
И при помощи ADB можно запустить на мобильном устройстве самый настоящий шелл Unix:
Запустив шелл, можно использовать все доступные на устройстве команды UNIX — cat, ls, df и другие, а также запускать сценарии.
Если есть root и Busybox, то с мобильным устройством вообще можно делать всё, что захочется. Так что, используя ADB, следует быть осторожным.
Полный список всех ADB-команд можно получить, запустив adb без параметров. Более подробно про отладку с его помощью описано вот здесь. В каких-то нестандартных случаях может помочь заметка — Помогаем ADB (Android Debug Bridge) увидеть планшет. А вот, ещё более подробное руководство по установке adb, но на английском.
Набор других интересных специализированных программ для соединения стационарного компа и своих Anrdoid-устройств — можно найти в статье «Как сдружить Android-смартфон с десктопом?» + советую глянуть «Пять команда ADB, о которых должен знать каждый».
Предупреждение
К вашему сожалению или счастью представленные 4 способа получения S-OFF являются универсальными, поэтому один, два, а то и все четыре способа могут не сработать, это связана из-за универсальности, новых прошивок выпускаемых HTC на которых усилена защита и другие факторы. Выполняйте каждый способ 2 раза, чтобы убедиться что способ не рабочий (если с первого раза не сработал), после чего переходите к следующему способу. Воспользуйтесь списком S-OFF составленный пользователями сайта Android +1 (читайте ниже).