Это обзорная статья для таких же, как и я, которые начали программировать уже в тот момент, когда весь функционал командной строки обрел кнопочки в интерфейсе.
В этой инструкции хочу рассказать о командах adb
, которые использовать легче, чем делать то же самое через UI Android Studio или настройки Android.
Основная задача — показать возможности adb
, которые избавят от рутинных шагов при разработке/отладке. Например, позволят быстро переключать светлую тему на темную.
Рассмотрим те команды, которые действительно пригождаются хотя бы раз в пару дней. Для остального есть документация.
Денис Долгополов
Блог об Android разработке — https://t.me/dolgo_polo_dev
Что такое 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.12DolgopolovDenis Автор
30.07.2023 20:49если речь про https://github.com/Genymobile/scrcpy, то он под капотом использует adb, и вероятно просто перебрасывает туда этот аргумент)
>scrcpy
executeadb
commands to initialize the connection with the device
https://raw.githubusercontent.com/Genymobile/scrcpy/master/FAQ.md
Rusrst
О да, это полезная штука, особенно для тестов. С помощью этих команд можно точку входа менять (интенты) - что всякие тесты по сути и делают из студии. Ещё memsys полезно очень
DolgopolovDenis Автор
а memsys также для тестов используете (смотреть нагрузку) или есть еще применения?
Rusrst
Ещё можно всякие утечки памяти там смотреть - activity, view. Но я не часто пользуюсь, если честно.
Единственное что мне больше нравится это gfx вместо полос на экране для кадров.