Это обзорная статья для таких же, как и я, которые начали программировать уже в тот момент, когда весь функционал командной строки обрел кнопочки в интерфейсе.

В этой инструкции хочу рассказать о командах 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)


  1. Rusrst
    30.07.2023 20:49
    +1

    О да, это полезная штука, особенно для тестов. С помощью этих команд можно точку входа менять (интенты) - что всякие тесты по сути и делают из студии. Ещё memsys полезно очень


    1. DolgopolovDenis Автор
      30.07.2023 20:49

      а memsys также для тестов используете (смотреть нагрузку) или есть еще применения?


      1. Rusrst
        30.07.2023 20:49

        Ещё можно всякие утечки памяти там смотреть - activity, view. Но я не часто пользуюсь, если честно.

        Единственное что мне больше нравится это gfx вместо полос на экране для кадров.


  1. Aspos
    30.07.2023 20:49
    +2

    Аргументы adb и многие другие приложения с радостью едят. Например:
    scrcpy -s 192.168.1.12


    1. DolgopolovDenis Автор
      30.07.2023 20:49

      если речь про https://github.com/Genymobile/scrcpy, то он под капотом использует adb, и вероятно просто перебрасывает туда этот аргумент)

      > scrcpy execute adb commands to initialize the connection with the device
      https://raw.githubusercontent.com/Genymobile/scrcpy/master/FAQ.md


      1. Aspos
        30.07.2023 20:49

        Да, я об этом. Многие приложения под капотом используют adb.


  1. LeshaRB
    30.07.2023 20:49
    +4

    Пару команд для командой строки, и реклама телеграмм канала

    Для меня самая важная
    fastboot flash init_boot magisk_patched.img

    После
    adb sideload ota.zip


    1. Nykras
      30.07.2023 20:49

      Вы забыли САМЫЕ центровые команды: fastboot oem unlock и fastboot boot boot.img))