ANDROID DEBUG BRIDGE
Android Debug Bridge (adb) – универсальный инструмент командной строки, который позволит Вам взаимодействовать с экземпляром эмулятора или подключёнными Android-устройствами. Это клиент-серверная программа, состоящая их трех компонентов:
- Клиент, который работает на Вашем хосте разработки (компьютере разработчика). Вы можете вызвать клиента из командной строки, используя команду adb. Другие инструменты Android, такие как DDMS и плагин ADT, также создают клиентов adb.
 - Сервер, который запущен как фоновый процесс на хосте разработки. Сервер управляет обменом данными между клиентом и adb-демоном, работающем на эмуляторе или устройстве.
 - Демон, который запущен как фоновый процесс на каждом экземпляре эмулятора или устройства.
 
Утилиту adb Вы можете найти в <sdk>/platform-tools/.
При запуске adb-клиента, клиент сначала проверяет, запущен ли процесс сервера adb. Если нет, то он запускает процесс сервера. Когда стартует сервер, он запускает прослушивание локального порта TCP 5037 и считывает с него поступающие команды от adb-клиентов — все клиенты adb используют порт 5037 для обмена данными с сервером adb.
Затем сервер устанавливает соединения со всеми запущенными экземплярами эмуляторов/устройств. Он находит эмуляторы и устройства путем сканирования нечетных портов в диапазоне 5555…5585, диапазон, используемый эмуляторами/устройствами. Когда сервер находит демона adb, он устанавливает с ним соединение по этому порту. Имейте в виду, что каждый экземпляр эмулятора/устройства занимает пару последовательных портов — четный номер порта для подключения консоли и нечетный номер порта для adb-соединений. Например:
Emulator 1, console: 5554 Emulator 1, adb: 5555 Emulator 2, console: 5556 Emulator 2, adb: 5557 и так далее ...
Как здесь показано, экземпляр эмулятора, подключенного к adb через порт 5555 тот же самый, что прослушивает порт консоли 5554.
Как только сервер установил соединения со всеми экземплярами эмуляторов, Вы можете использовать команды adb для получения доступа к этим экземплярам. Поскольку сервер управляет соединениями с экземплярами эмуляторов/устройств и обрабатывает команды от множества клиентов adb, Вы можете управлять любым эмулятором/устройством от любого клиента (или из скрипта).
Включение отладки ADB
Для использования adb с устройством, подключённым по USB, Вам необходимо включить отладку по USB в настройках системы устройства, в разделе «Для разработчиков».
На Android 4.2 и выше окно «Для разработчиков» скрыто по умолчанию. Для того, чтобы сделать его видимым, перейдите в Настройки -> Об устройстве и нажмите на номер версии семь раз. Вернитесь к предыдущему экрану, чтобы найти «Для разработчиков» внизу.
На некоторых устройствах окно «Для разработчиков» может быть расположено или называться иначе.
Примечание: когда Вы подключаете устройство, которое работает на Android 4.2.2 и выше, к Вашему компьютеру, система покажет диалог, запрашивающий подтвердить ключ RSA, который позволит отлаживать Android-программы через этот компьютер. Этот механизм безопасности защищает устройство пользователя, потому что он гарантирует, что отладка через USB и другие команды adb не могут быть выполнены, пока Вы явно не разблокируете устройство, выбрав подтверждение в этом диалоге. Для поддержки этой возможности требуется adb версии 1.0.31 (доступно в SDK Platform-tools r16.0.1 и выше) для отладки на устройстве, работающем на Android 4.2.2 и выше.
Подключение к приставке с помощью ADB на ПК Windows
Для того чтобы установить соединение между приставкой и ПК, необходимо:
- Открыть командную строку на ПК (путём нажатия Windows + R)
 - Запустить команду cmd
 - Перетащить adb.exe в консоль и нажмите Enter
 - Подключить adb-хост к устройству:
 
adb connect #.#.#.# connected to #.#.#.#:5555
Если adb-соединение постоянно теряется:
- Убедитесь, что Ваш хост остаётся подключённым у к той же сети, что и приставка.
 - Повторно подключитесь
 - Если это не сработает, перезагрузите Ваш adb-хост и попробуйте ещё раз сначала:
 
adb kill-server
Синтаксис
Вы можете вызвать команды adb из командной строки хоста разработки или из скрипта. Общий вид команды adb следующий:
adb [-d|-e|-s <serialNumber>] <command>
Если на хосте разработки работает только один эмулятор или подключено только одно устройство, то команда adb подключится к нему по умолчанию. Если работает несколько эмуляторов или подключено несколько устройств, то нужно указывать опции -d, -e или -s, чтобы указать целевое устройство для подключения - кому предназначена команда.
Команды
В таблице ниже перечислены все поддерживаемые команды adb, а также объясняется их назначение и использование.
Категория  | 
       Команда  | 
       Описание  | 
       Комментарии  | 
      
|---|---|---|---|
Target device (целевое устройство)  | 
       -d  | 
       Направляет команду adb на любое подключенное (не эмулятор) через USB устройство.  | 
       Возвращает ошибку, если подключено больше одного USB устройства.  | 
      
Target device (целевое устройство)  | 
       -e  | 
       Направляет команду adb на любой запущенный экземпляр эмулятора.  | 
       Возвращает ошибку, если запущено больше одного экземпляра эмулятора.  | 
      
Target device (целевое устройство)  | 
       -s <serialNumber>  | 
       Направляет команду adb на специально указанный экземпляр эмулятора/устройства по его серийному номеру  | 
       См. раздел "Направление команд на определенно заданный экземпляр эмулятора/устройства"  | 
      
General (общие команды)  | 
       devices  | 
       Выводит список всех подключенных экземпляров эмуляторов/устройств.  | 
       См. раздел "Опрос имеющихся эмуляторов/устройств".  | 
      
General (общие команды)  | 
       help  | 
       Выводит список всех поддерживаемых команд adb.  | 
       |
General (общие команды)  | 
       version  | 
       Выводит номер версии adb.  | 
       |
Debug (отладка)  | 
       logcat [option] [filter-specs]  | 
       Выводит данные лога на экран.  | 
       |
Debug (отладка)  | 
       bugreport  | 
       Выводит данные dumpsys, dumpstate и logcat на экран (предназначено для сообщений об ошибках разработчикам).  | 
       |
Debug (отладка)  | 
       jdwp  | 
       Выводит список доступных процессов JDWP на указанном устройстве.  | 
       Вы можете использовать спецификацию перенаправления портов forward jdwp: < pid > для подключения к определенному процессу JDWP  | 
      
Data (работа с файлами)  | 
       install <path-to-apk>  | 
       Проталкивает приложение Android (нужно указать полный путь к файлу .apk на хосте отладки) на эмулятор/устройство.  | 
       |
Data (работа с файлами)  | 
       pull <remote> <local>  | 
       Копирует указанный файл с эмулятора/устройства на хост отладки.  | 
       |
Data (работа с файлами)  | 
       push <local> <remote>  | 
       Копирует указанный файл с хоста отладки на эмулятор/устройство.  | 
       |
Ports and Networking (порты и сетевые содеинения)  | 
       forward <local> <remote>  | 
       Перенаправляет соединения сокета с указанного локального порта (local) в указанный удаленный порт (remote) на экземпляре эмулятора/устройства.  | 
       Спецификация порта может использовать следующие схемы:  | 
      
Ports and Networking (порты и сетевые содеинения)  | 
       ppp <tty> [parm]…  | 
       Запускает PPP поверх USB, <tty> — tty для PPP потока  | 
       Примечание: Обратите внимание, что Вы не должны автоматически запускать PPP-соединение  | 
      
Scripting (скрипты)  | 
       get-serialno  | 
       Выводит строку серийного номера экземпляра adb.  | 
       См. раздел "Опрос имеющихся эмуляторов/устройств"  | 
      
Scripting (скрипты)  | 
       get-state  | 
       Выводит состояние adb на экземпляре эмулятора/устройства.  | 
       |
Scripting (скрипты)  | 
       wait-for-device  | 
       Блокирует выполнение, пока устройство не будет готовым (не перейдет в online) - т. е., пока состояние не станет device.  | 
       |
Server (управление сервером)  | 
       start-server  | 
       Проверяет, запущен ли процесс сервера adb и запускает его, если процесс сервера не запущен.  | 
       |
Server (управление сервером)  | 
       kill-server  | 
       Прерывает работу процесса сервера adb  | 
       |
Shell (командная строка)  | 
       shell  | 
       Запускает remote shell (доступ к командной строке) на экземпляре эмулятора/устройства.  | 
       См. раздел "Выдача команд Shell".  | 
      
Shell (командная строка)  | 
       shell [shellCommand]  | 
       Выдает команду шелла на экземпляре эмулятора/устройства, и сразу производит выход из шелла.  | 
       См. раздел "Выдача команд Shell".  | 
      
Более детальную информацию Вы можете найти на официальном веб-сайте Android Debug bridge

