
Это обзорная статья для таких же, как и я, которые начали программировать уже в тот момент, когда весь функционал командной строки обрел кнопочки в интерфейсе.
В этой инструкции хочу рассказать о командах adb, которые использовать легче, чем делать то же самое через UI Android Studio или настройки Android.
Основная задача — показать возможности adb, которые избавят от рутинных шагов при разработке/отладке. Например, позволят быстро переключать светлую тему на темную.
Рассмотрим те команды, которые действительно пригождаются хотя бы раз в пару дней. Для остального есть документация.
Что такое ADB
adb (Android Debug Bridge) — это программа для управления андроидом через командную строку.
Hidden text
https://developer.android.com/tools/adb — тут есть более правильное определение + объяснение, почему adb называют клиент-серверным приложением.
Сменить тему (светлая/темная)
// перейти на темную тему
adb shell cmd uimode night yes
// перейти на светлую тему
adb shell cmd uimode night no
Принудительная остановка приложения
adb shell am force-stop ru.test.app
Удалить кэш и данные приложения
adb shell pm clear
Включить/выключить Wi-Fi
adb shell svc wifi enable
adb shell svc wifi disable
Удалить файл
Без root-прав некоторые директории будут недоступны через adb
adb shell rm "/records/albums/music.mp3"
Отправить Intent
Пригождается, когда нужно сэмулировать Intent от системы:
adb shell am broadcast -a android.media.tv.action.INITIALIZE_PROGRAMS -n ru.app.test/ru.app.test.featureName.TestBroadcastReceiver
Отправить deeplink:
adb shell am start -a android.intent.action.VIEW -d "mydeeplink"
Или запустить Activity:
adb shell am start -n ru.test.app/.feature.main.MyActivity
Установить proxy ip
Если вы пользуетесь Charles/Proxyman или другой программой для работы с трафиком, то можете быстро установить proxy ip командой:
adb shell settings put global http_proxy 192.168.1.12:8888
Сбросить proxy ip:
adb shell settings put global http_proxy :0
Изменить плотность экрана
Удобно для тестирования UI на разных разрешениях:
adb shell wm density 160
например
adb shell wm density 160
Узнать, какая изначальная плотность экрана:
adb shell wm density
// Physical density: 440
// Override density: 160
Установить apk
adb install -d -r -g "C://downloads/.../test.apk"
аргументы (лишние убрать):
-r — сохранить данные приложения (например, информацию в shared preferences)
-g — выдать все разрешение, запрашиваемые в манифесте
-d — отключает проверку версии приложения (по умолчанию версия устанавливаемого приложения должна быть равна или больше версии установленного)
Подключение по Wi-Fi
Необходимо, чтобы компьютер и телефон находились в одной сети. На Android нужно включить "Отладку по Wi-Fi" в настройках разработчика.
adb connect ip:port
например:
adb connect 192.168.1.12
или
adb connect 192.168.1.12:5555
Список подключенных устройств и их ip
adb devices
Выбор определенного устройства
Если вы работаете с несколькими устройствами, то чтобы отправить любую команду на определенное устройство (а не получать ошибку List of devices attached), можно передать аргумент -s ip
adb -s 192.168.1.12 uninstall ru.test.app
Заключение
Когда определите для себя топ удобных команд, можно сделать для них alias (псевдонимы для длинных команд). Тогда использование adb станет действительно удобнее, чем GUI.
Комментарии (8)

Aspos
30.07.2023 20:49+2Аргументы adb и многие другие приложения с радостью едят. Например:
scrcpy -s 192.168.1.12
DolgopolovDenis Автор
30.07.2023 20:49если речь про https://github.com/Genymobile/scrcpy, то он под капотом использует adb, и вероятно просто перебрасывает туда этот аргумент)
>scrcpyexecuteadbcommands to initialize the connection with the device
https://raw.githubusercontent.com/Genymobile/scrcpy/master/FAQ.md

Rusrst
О да, это полезная штука, особенно для тестов. С помощью этих команд можно точку входа менять (интенты) - что всякие тесты по сути и делают из студии. Ещё memsys полезно очень
DolgopolovDenis Автор
а memsys также для тестов используете (смотреть нагрузку) или есть еще применения?
Rusrst
Ещё можно всякие утечки памяти там смотреть - activity, view. Но я не часто пользуюсь, если честно.
Единственное что мне больше нравится это gfx вместо полос на экране для кадров.