[Open source, Разработка под Android] Делюсь небольшим, но полезным плагином: Deeplink Helper для Android Studio

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
11-Дек-2020 13:33

DRY. Don’t Repeat Yourself. Принцип, призывающий разработчика не дублировать код. DRY часто можно распространить шире, не только на код. Сегодня расскажу о личном проекте, который уже помог мне и другим разработчикам избавиться от последовательности рутинных действий при разработке и отладке приложений для Android. И не просто расскажу — а ещё и поделюсь этим инструментом и его исходным кодом.
Рассмотрим проблему на примере нашего продукта. Яндекс.Маркет — приложение большое, но стандартное с точки зрения разработки. Оно состоит из множества связанных между собой экранов с различными состояниями. Разработчик, создавая функциональность, часто имеет дело с экранами, до которых можно добраться только после множества действий в интерфейсе приложения. Пользовательские сценарии порой состоят из десятков действий, и все их нужно воспроизводить при отладке или проверке приложения. Согласитесь, это даже звучит больно.
Если при работе над приложением вы хотите уменьшить количество таких действий и переключений фокуса с IDE на Android-устройство, то прошу под кат.
Мысль автоматизировать рутинные действия в интерфейсе приложения появилась у меня при работе над задачей, которая при отладке требовала регулярно повторять примерно следующий сценарий (в скобках перечислены действия):
  • переключиться на регион A (профиль → регион → набрать название города);
  • добавить в корзину товар X (поиск → набрать название товара → в корзину);
  • переключиться на регион B (профиль → регион → набрать название города);
  • добавить в корзину товар Y (поиск → набрать название товара → в корзину);
  • перейти на экран корзины.

Около двадцати действий с приложением — и это без учёта ввода текста. Чтобы автоматизировать сценарий, я решил использовать диплинки.
Напомню, что диплинк — это специальным образом сформированный URI. Чтобы приложение его поддерживало, нужно зарегистрировать схему URI в манифесте приложения и реализовать логику обработки. Более подробная документация тут. Как правило, диплинки используются, чтобы открывать приложение на определённом экране после клика на сайте или в рассылке. Для тестирования диплинков в Android можно имитировать переход по диплинку через ADB-команду.
На тот момент в нашем приложении уже поддерживался ряд диплинков, но покрывали они только часть необходимой мне функциональности. Поэтому для описанного выше сценария создали два новых диплинка: переключение региона и добавление товара в корзину. Такие диплинки необходимы только для отладки и тестирования, поэтому мы называем их отладочными, они недоступны пользователям в релизной сборке. Логика обработки стандартных диплинков — это действия, связанные с навигацией внутри приложения. Отладочные диплинки, как правило, оперируют с логикой, не связанной с UI.
Несмотря на то что создавать диплинки просто, управлять ими через ADB крайне неудобно. Нужно каждый раз искать в истории терминала команду с определёнными параметрами, вспоминая соответствие параметров и результата. Вот эту проблему я и решил с помощью плагина для Android Studio.
Чем плагин лучше приложения:
  • нет необходимости тянуть за собой ADB или искать его в системе: в IDE есть API для работы с ADB;
  • не нужно переключаться между окном IDE и приложения;
  • плагин, в отличие от приложений, легко распространять (у каждой ОС свой источник доверенного ПО).

В итоге за несколько вечеров родилась первая версия плагина Deeplink Helper, позволяющая отправлять диплинки на устройство. Диплинки при этом могут быть с аргументом или без. Им можно задавать читабельное название. После выполнения каждая команда попадает в лог, он же сценарий. Можно сохранить его, открыть в другой IDE, поделиться им с командой. При этом команды из сценария можно выполнять как по одной, так и все подряд.

Таким образом получается автоматизировать целые сценарии. Я редко пользуюсь выполнением сценариев полностью, за раз. Как правило, удобнее поочерёдно выполнять команды. Сценариями особенно трудновоспроизводимых случаев можно делиться с тестировщиками. Экономим их время.
В какой-то момент возникла потребность добавить в плагин возможность выполнения произвольных ADB-команд. И это было сделано. И конечно же, помимо диплинков, можно добавлять произвольные ADB/shell-команды. Задаётся это всё в едином конфигурационном файле формата JSON, в котором следует указать packageName приложения. Также доступно редактирование конфигурации, туда можно добавить и свои диплинки, и полезные ADB-команды (примеры тут).
Я чаще всего использую такие сценарии, состоящие только из ADB-команд:
  • переподключить устройство к Charles: (ADB reverse, выключить Wi-Fi, включить Wi-Fi);
  • очистить данные приложения;
  • открыть приложение.

Эти команды уже есть в конфигурационном файле по умолчанию.
Плагин продолжает разрабатываться. Например, пока нельзя выбрать из нескольких подключённых устройств, обрабатываются диплинки не более чем с одним аргументом. Если вам интересно присоединиться к доработке Deeplink Helper, присылайте пул-реквесты на гитхабе. Сам плагин можно скачать тут.
Надеюсь, этот простой инструмент сэкономит время и вам. Уверен, существуют альтернативные варианты решения этой проблемы — буду рад обсудить их в комментариях.
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_open_source, #_razrabotka_pod_android (Разработка под Android), #_android_development, #_plugin, #_android_studio, #_kotlin, #_jetb, #_prilozhenija (приложения), #_blog_kompanii_jandeks (
Блог компании Яндекс
)
, #_open_source, #_razrabotka_pod_android (
Разработка под Android
)
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 22-Ноя 12:32
Часовой пояс: UTC + 5