ADB (Android Debug Bridge) — утилита, входящая в стандартный Android SDK, набор инструментов для разработчика. Она обеспечивает CLI интерфейс для взаимодействия с файловой системой вашего телефона. Так как платформа Android основана на Linux, то command-line is the only way to obtain and manipulate root access часто необходима для выполнения некоторых расширенных операций.
Хотя эти вещи можно сделать непосредственно на самом устройстве, используя какое-либо приложение эмулятора терминала, будет довольно трудно выполнять сложные команды на таком маленьком экране. ADB обеспечивает «мост» между вашим устройством и компьютером. По сути, она предоставляет неограниченный контроль над устройством.
Лично я использую ADB для отладки приложений при разработке. Раньше все делал по старинке: подключал телефон по USB, и понеслось.. но после того, как достаточно освоил adb, теперь все делаю по wifi, жизнь стала проще — никаких проводов 🙂
Android Debugging Bridge — adb
Прежде чем продолжить, хотел бы отметить несколько важный замечаний. Android virtual device (виртуальное устройство) может быть спокойно доступен через adb, нормальный же Android телефон должен быть с root-правами.
Я не буду сейчас детально углубляться, что может делать утилита ADB, но если вкратце, то:
- Просматривать логи смартфона
- Устанавливать/Удалять приложения
- Копировать на телефон или скачивать с него файлы
- полноценная shell сессия
И еще несколько крутых фишек. Можно даже делать скриншоты, звонки и посылать SMS 🙂 Но это останется за пределами этой статьи.
Итак, по дефолту adb сервис на компьютере слушает порт 5037, а adb демон (фоновый процесс) на телефоне — 5555 порт.
Рассмотрим несколько вариантов для установления TCP сессии.
From your device, if it is rooted
Вы можете включить adb по WiFi с помощью команд в терминале вашего устройства:
su setprop service.adb.tcp.port 5555 stop adbd start adbd
su — получение прав root-пользователя
setprop service.adb.tcp.port 5555 — прописываем в настройках adb сервиса порт, который он будет слушать, в данном случае 5555, естественно, можно указать свой, но тогда нужно будет при соединении явно его указывать.
stop adbd, start adbd — перезапускаем adbd (adb daemon) для применения новых настроек.
Для того, чтобы выключить и вернуть adb сервис на телефоне обратно к «прослушиванию» USB, выполните:
setprop service.adb.tcp.port -1 stop adbd start adbd
From a computer, if you have USB access already
Если у вас есть доступ к устройству по USB, то можно сделать еще проще. В командной строке компьютера, к которому подключено устройство, выполните:
adb tcpip 5555
Connect, my Dear!
Теперь все готово, чтобы установить соединение. Общий вид команды имеет вид:
adb connect <ip>:<port>
где ip — ip-адрес вашего смартфона, port — порт, который слушает adb сервис на смартфоне.
Вы можете узнать IP-адрес вашего Android устройства двумя способами:
Manual IP Discovery
Зайдите в настройки Android’s WiFi, нажмите на значок сети, к которой вы подключены, и вы увидите IP-адрес внизу экрана
Discover IP
Можно также при помощи утилиты nmap просканировать сеть и найти нужные нам устройства, на которых открыт порт 5555. Для этого выполните:
nmap -v 192.168.1.* -p 5555
Мы видим два устройства, да, это мои Android планшет и смартфон
В итоге в моем случае получилось
adb connect 192.168.1.11:5555
Вот и все 🙂 Теперь мы можем, например, открыть терминальную сессию:
adb shell
Сейчас мы находимся внутри телефона. Для возвращения к своей локальной сессии выполните
exit
Чтобы сказать adb сервису на устройстве опять «слушать» по USB
adb usb
Если мы попытаемся теперь соединиться, то получим ошибку.
Для повторного успешного соединения нам нужно заново открыть порт на смартфоне через его терминал.
Изменить стандартный порт (т.е. 5037) adb сервиса на компьютере можно двумя способами:
Во-первых
export ANDROID_ADB_SERVER_PORT = 2339 adb start-server
Или же
adb -P 2339 start-server
Если adb сервер еще не запущен, то данная команда запустит новый adb сервер с заданным портом.
Проверить, что сервер действительно запустился на нужном порту, можно, например, командой
netstat -tulpan | grep LISTEN
На этом пока все. Если у кого-то возникли какие-либо вопросы или замечания, смело оставляйте свои комментарии. До новых встреч на нашем блоге!
под win есть удобная MyPhoneExplorer, а есть подобное под linux?
я делал так: sudo rm -r /
Тоже вариант. Всегда так делаю, когда система засоряется:)
очень смешно)
Привет.
Возможно ли задать хостнейм на девайсе и коннектиться не по IP адресу, а по хостнейму?