[Open source, Разработка под Android] Делюсь небольшим, но полезным плагином: Deeplink Helper для Android Studio
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
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
===========
Похожие новости:
- [Управление разработкой, Управление проектами] Space: публичный релиз командной среды от JetBrains
- [Разработка мобильных приложений, Разработка под Android, Разработка под MacOS] Переходим В OFFLINE FIRST с использованием Core Data и Managed Document(s)
- [Open source, Git, Виртуализация, Openshift] Миграция приложений и аварийное восстановление с помощью Red Hat Advanced Cluster Management (ACM)
- [Программирование, Kotlin] Проверка на равенство в Kotlin (перевод)
- [Информационная безопасность, Криптография, Open source, Законодательство в IT] Немецкий суд заставил почтового провайдера Tutanota установить бэкдор
- [Open source, Управление разработкой] Google меняет модель лицензирования операционной системы Fuchsia: теперь это полностью открытый проект
- [Программирование, Разработка мобильных приложений, Разработка под Android, Kotlin] Практическое руководство по использованию Hilt с Kotlin (перевод)
- [Open source, Git, Системы управления версиями, DevOps] Вышел релиз GitLab 13.6 с автоматическим развёртыванием в EC2 и статистикой использования для инстанса
- [Open source, GitHub, Финансы в IT] Amazon и American Express начнут спонсировать разработчиков по новой программе GitHub
- [Open source, Софт, IT-компании] Google позволил сторонним разработчикам участвовать в работе над Fuchsia OS
Теги для поиска: #_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
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
DRY. Don’t Repeat Yourself. Принцип, призывающий разработчика не дублировать код. DRY часто можно распространить шире, не только на код. Сегодня расскажу о личном проекте, который уже помог мне и другим разработчикам избавиться от последовательности рутинных действий при разработке и отладке приложений для Android. И не просто расскажу — а ещё и поделюсь этим инструментом и его исходным кодом. Рассмотрим проблему на примере нашего продукта. Яндекс.Маркет — приложение большое, но стандартное с точки зрения разработки. Оно состоит из множества связанных между собой экранов с различными состояниями. Разработчик, создавая функциональность, часто имеет дело с экранами, до которых можно добраться только после множества действий в интерфейсе приложения. Пользовательские сценарии порой состоят из десятков действий, и все их нужно воспроизводить при отладке или проверке приложения. Согласитесь, это даже звучит больно. Если при работе над приложением вы хотите уменьшить количество таких действий и переключений фокуса с IDE на Android-устройство, то прошу под кат. Мысль автоматизировать рутинные действия в интерфейсе приложения появилась у меня при работе над задачей, которая при отладке требовала регулярно повторять примерно следующий сценарий (в скобках перечислены действия):
Около двадцати действий с приложением — и это без учёта ввода текста. Чтобы автоматизировать сценарий, я решил использовать диплинки. Напомню, что диплинк — это специальным образом сформированный URI. Чтобы приложение его поддерживало, нужно зарегистрировать схему URI в манифесте приложения и реализовать логику обработки. Более подробная документация тут. Как правило, диплинки используются, чтобы открывать приложение на определённом экране после клика на сайте или в рассылке. Для тестирования диплинков в Android можно имитировать переход по диплинку через ADB-команду. На тот момент в нашем приложении уже поддерживался ряд диплинков, но покрывали они только часть необходимой мне функциональности. Поэтому для описанного выше сценария создали два новых диплинка: переключение региона и добавление товара в корзину. Такие диплинки необходимы только для отладки и тестирования, поэтому мы называем их отладочными, они недоступны пользователям в релизной сборке. Логика обработки стандартных диплинков — это действия, связанные с навигацией внутри приложения. Отладочные диплинки, как правило, оперируют с логикой, не связанной с UI. Несмотря на то что создавать диплинки просто, управлять ими через ADB крайне неудобно. Нужно каждый раз искать в истории терминала команду с определёнными параметрами, вспоминая соответствие параметров и результата. Вот эту проблему я и решил с помощью плагина для Android Studio. Чем плагин лучше приложения:
В итоге за несколько вечеров родилась первая версия плагина Deeplink Helper, позволяющая отправлять диплинки на устройство. Диплинки при этом могут быть с аргументом или без. Им можно задавать читабельное название. После выполнения каждая команда попадает в лог, он же сценарий. Можно сохранить его, открыть в другой IDE, поделиться им с командой. При этом команды из сценария можно выполнять как по одной, так и все подряд. Таким образом получается автоматизировать целые сценарии. Я редко пользуюсь выполнением сценариев полностью, за раз. Как правило, удобнее поочерёдно выполнять команды. Сценариями особенно трудновоспроизводимых случаев можно делиться с тестировщиками. Экономим их время. В какой-то момент возникла потребность добавить в плагин возможность выполнения произвольных ADB-команд. И это было сделано. И конечно же, помимо диплинков, можно добавлять произвольные ADB/shell-команды. Задаётся это всё в едином конфигурационном файле формата JSON, в котором следует указать packageName приложения. Также доступно редактирование конфигурации, туда можно добавить и свои диплинки, и полезные ADB-команды (примеры тут). Я чаще всего использую такие сценарии, состоящие только из ADB-команд:
Эти команды уже есть в конфигурационном файле по умолчанию. Плагин продолжает разрабатываться. Например, пока нельзя выбрать из нескольких подключённых устройств, обрабатываются диплинки не более чем с одним аргументом. Если вам интересно присоединиться к доработке Deeplink Helper, присылайте пул-реквесты на гитхабе. Сам плагин можно скачать тут. Надеюсь, этот простой инструмент сэкономит время и вам. Уверен, существуют альтернативные варианты решения этой проблемы — буду рад обсудить их в комментариях. =========== Источник: habr.com =========== Похожие новости:
Блог компании Яндекс ), #_open_source, #_razrabotka_pod_android ( Разработка под Android ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 12:32
Часовой пояс: UTC + 5