Будь эффективным — используй «туллинг»!

Доброго дня, читатель! Меня зовут Симонова Анастасия и я Android‑разработчик в команде мобильного приложения Домклик. Разработка мобильных приложений для Android — это увлекательный, но зачастую трудоёмкий процесс. Успех вашего проекта во многом зависит от эффективности используемых инструментов и рабочих процессов. Как разработчик, я знаю, насколько важно иметь под рукой правильный набор инструментов, которые помогают повышать продуктивность, улучшать качество кода и ускорять процесс разработки.

Хочу поделиться своим опытом и рассказать о наиболее полезных инструментах, которые я использую в своей повседневной работе. Мы рассмотрим как широко известные, так и менее популярные, но не менее ценные утилиты, которые помогут вам стать более эффективным Android‑разработчиком.

Оглавление

  1. Библиотеки для отладки

  2. Фермы устройств

  3. Моковые API-серверы

  4. Необычные инструменты Android Studio

  5. Плагины в Android Studio

  6. AI-помощники

  7. Музыка

Библиотеки для отладки

Одним из важнейших аспектов разработки Android-приложений является отладка и поиск ошибок. Когда ваше приложение сталкивается с проблемами, будь то падения, ошибки в логике или нехватка производительности, вам необходимо быстро и эффективно найти и устранить их. Для этого в арсенале разработчика должны быть мощные инструменты, которые помогут глубоко проанализировать состояние вашего приложения.

Chucker

Зачастую при разработке и тестировании функциональности приложений мы сталкиваемся с ошибками на стороне бэкенда. Неверные ответы от API, некорректные данные, непредвиденные ошибки — всё это может вызывать проблемы в работе мобильного клиента и требует тщательной отладки. Традиционно для этого используют различные HTTP‑клиенты, сетевые анализаторы и перехватчики трафика, чтобы понять, что происходит «под капотом» приложений.

Chucker - ваш персональный инспектор HTTP-трафика.
Chucker — ваш персональный инспектор HTTP‑трафика.

Chucker — это библиотека, упрощающая анализ HTTP-запросов/ответов и ошибок, которые возникают в Android-приложениях. Когда приложение делает сетевые запросы, Chucker перехватывает их и ответы с помощью OkHttp Interceptor. Также можно выгружать лог по запросу и делиться диагностикой с коллегами. Будет очень полезно для разработчиков и QA-инженеров, а также всех, кто участвует в тестировании мобильного приложения.

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

LeakCanary

Утечки памяти — это, пожалуй, одни из самых коварных ошибок, с которыми сталкиваются разработчики. Эти незаметные «вредители» могут тихо подкрадываться к вашему приложению, тайно поедая ресурсы устройства и приводя к лагам, а то и к полному падению. Несмотря на все ваши старания по написанию чистого и аккуратного кода, человеческий фактор всегда даёт о себе знать, и утечки памяти всё равно рано или поздно всплывают.

Ещё хуже, когда эти проблемы кроются в сторонних библиотеках, которые вы используете в своём проекте. Вот тут уже и вовсе сложно их отловить, особенно если вы не обладаете навыками глубокого анализа дампов памяти или не мониторите постоянно потребление памяти в IDE.

LeakCanary — библиотека, позволяющая в фоновом режиме находить утечки памяти во время работы приложения. При этом со стороны клиента ничего делать не нужно, просто укажите библиотеку в зависимостях Gradle, и она сама всё сделает.

LeakCanary: ваш верный страж против утечек памяти.
LeakCanary: ваш верный страж против утечек памяти.

Flipper

Ещё один мощный инструмент в арсенале разработчика мобильных приложений. Если Chucker специализируется только на анализе сетевого трафика, то Flipper предлагает гораздо более широкий спектр возможностей для комплексной отладки и мониторинга приложений. Программа включает в себя множество плагинов, которые позволяют детально исследовать различные аспекты работы приложения:

  • Инспектор UI-элементов, который позволяет изучать иерархию представлений, их свойства и взаимосвязи.

  • Отладчик состояния приложения, который отслеживает изменения данных, хранимых в памяти.

  • Логгер, позволяющий анализировать все сообщения, выводимые приложением.

  • Плагин для работы с SQLite-базами данных, позволяющий напрямую взаимодействовать с хранимыми данными.

  • SharedPreferences Viewer предоставляет доступ к сохранённым данным.

  • Инструмент для отладки сетевых запросов, похожий на Chucker.

Одно из ключевых преимуществ Flipper — это его расширяемость. Разработчики могут создавать собственные плагины, адаптируя инструмент под нужды своего проекта. Это делает Flipper универсальным решением, которое может применяться на различных этапах разработки и тестирования приложений.

Flipper: ваш всевидящий помощник в отладке приложений.
Flipper: ваш всевидящий помощник в отладке приложений.

Фермы устройств

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

Один из подходов, который помогает решить эту проблему, — это использование так называемых «ферм устройств». Это специальные лаборатории, оснащённые множеством реальных гаджетов, на которых разработчики могут тестировать свои приложения. Такие фермы позволяют быстро и эффективно проверить работоспособность приложения на широком спектре аппаратных и программных конфигураций, выявляя и устраняя различные проблемы совместимости.

STF

Самым безопасным решением будет поднятие фермы в корпоративной инфраструктуре. Корпоративные серверы, как правило, обеспечивают высокий уровень безопасности, включая защиту от несанкционированного доступа и шифрование данных. Развёртывая ферму устройств на таких серверах, разработчики могут быть уверены, что конфиденциальные данные их приложений, а также информация о тестовых устройствах будут надёжно защищены от утечек и кражи. Кроме того, корпоративная ИТ-инфраструктура обычно характеризуется высокой доступностью и отказоустойчивостью, что гарантирует бесперебойную работу фермы устройств даже в случае сбоев или аварий. Это особенно важно для крупных проектов, где простои могут привести к значительным задержкам и финансовым потерям.

Одним из популярных инструментов для организации такой корпоративной фермы является STF (Sauce Labs Test Framework). Это веб-приложение, которое позволяет удалённо управлять и тестировать устройства прямо из браузера. Все, кто участвует в тестировании приложений, могут подключаться к ферме, запускать на устройствах свои тесты, отлаживать приложения и анализировать результаты, не покидая рабочего места.

STF: Список устройств
STF: Список устройств
STF: страница управления устройством.
STF: страница управления устройством.

Подробная инструкция по установке описана на гитхабе. Ключевые преимущества использования STF:

  • Безопасность и приватность данных благодаря размещению на корпоративных серверах.

  • Удобный веб-интерфейс для удалённого доступа к устройствам.

  • Возможность автоматизации тестирования с помощью скриптов.

  • Мониторинг и аналитика использования устройств в ферме.

Samsung Remote Test Lab

Если у вас нет возможности использовать корпоративные серверы, вам могут потребоваться альтернативные решения, которые являются более гибкими и работают в других условиях, например, облачные сервисы или локальные серверы. Одно из таких решений предоставляет нам Samsung.

Samsung Remote Test Lab — это бесплатный сервис, который позволяет разработчикам тестировать приложения удалённо в виртуальном режиме, на тысячах реальных устройств сотен моделей семейства Samsung Galaxy без приобретения оборудования. Для работы в сервисе требуется Samsung Account. После входа даётся 20 кредитов для аренды устройств. Ежедневно вы получаете ещё 10 кредитов, которые эквивалентны пяти часам аренды любых устройств в выбранном регионе. Список доступных моделей в каждом регионе отличается.

Samsung Remote Test Lab: список устройств.
Samsung Remote Test Lab: список устройств.
Samsung Remote Test Lab: аренда устройства.
Samsung Remote Test Lab: аренда устройства.

При подготовке статьи я столкнулась с проблемой: мой аккаунт Samsung был заблокирован, а создание нового на территории Российской Федерации в настоящее время невозможно. Это ограничение создаёт неудобства для пользователей, и, возможно, в будущем мы снова сможем наслаждаться преимуществами этого замечательного сервиса. Однако, на данный момент приходится искать альтернативные решения.

BrowserStack

Одной из таких альтернатив облачной фермы устройств является BrowserStack. BrowserStack — ведущий провайдер облачных решений для тестирования приложений и веб‑браузеров. Он предоставляет полный спектр возможностей для выполнения исчерпывающих тестов, экономя время и ресурсы разработчиков. Сервис предлагает широкий выбор Android и iOS-устройств, а также различных версий браузеров. Эта функция позволяет тестировать на различных платформах и конфигурациях. Сервис позволяет делать снимки экрана и видеозаписи, чтобы документировать и анализировать результаты тестирования.

BrowserStack: список доступных устройств.
BrowserStack: список доступных устройств.

Сервис BrowserStack имеет платную и бесплатную версии. Основным ограничением бесплатного режима является длительность сессии — всего 2 минуты. Это может создавать определённые неудобства для пользователей, которым нужно больше времени для тестирования приложений. Также ограничения касаются количества доступных устройств для тестирования. BrowserStack доступен и работает на территории РФ.

Genymotion

В качестве локальной фермы устройств подойдёт решение на основе Virtual Box — Genymotion. Оно виртуализирует, а не эмулирует Android, обеспечивая ощутимый прирост производительности. Его легко настроить и пользоваться.

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

Genymotion: список устройств.
Genymotion: список устройств.

Сервис Genymotion имеет платную и бесплатную версии. Главный плюс платной версии в том, что она позволяет запускать виртуальные устройства в облаке, легко масштабируя тестовую среду и управляя большим количеством устройств.

Моковые API-серверы

В мире разработки программного обеспечения API-серверы играют жизненно важную роль в предоставлении функциональности и данных приложениям. Однако во время разработки и тестирования часто бывает необходимо имитировать поведение реального апи, чтобы протестировать поведение в различных условиях, а также при распараллеливании разработки бэкенда и фронтенда.

Моковые API‑серверы позволяют решить эту задачу. Они являются подделками, которые эмулируют поведение реального API‑сервера, позволяя разработчикам имитировать различные сценарии и проверять ожидаемое поведение приложения.

WireMock Cloud

Одним из таких популярных инструментов является WireMock Cloud. Он позволяет создавать заглушки (mocks) для API, определять ожидаемые запросы и ответы, настраивать поведение сервиса, включая задержки, ошибки и многое другое. Это делает его мощным инструментом для тестирования как на начальных стадиях разработки, так и на более поздних этапах, когда требуется проверка взаимодействия между компонентами приложения. WireMock Cloud — это облачная платформа, которая предоставляет возможность создания виртуальных HTTP-сервисов без установки и настройки инфраструктуры на стороне пользователя.

WireMock: схема работы.
WireMock: схема работы.
WireMock Cloud: пример создания запроса.
WireMock Cloud: пример создания запроса.

Сервис WireMock Cloud имеет платную, бесплатную и нативную версии. Ограничения бесплатной версии:

  • 100 запросов в день;

  • время жизни сессии — 2 часа;

  • ограничение на размер файлов — до 1 Мб;

  • предоставляет только поддомен вида *.cloudhub.io;

  • отсутствие пользовательской аутентификации;

  • отсутствие пользовательской конфигурации.

Таким образом, бесплатный план WireMock Cloud подходит для простых прототипов и небольших проектов. Если вам нужны более широкие возможности, придётся перейти на платный план или локальную версию WireMock. Как развернуть WireMock локально, подробно описано в этой статье.

Необычные инструменты Android Studio

Android Studio — это мощная интегрированная среда разработки, которая предлагает широкий спектр инструментов для создания приложений под Android. Однако помимо общеизвестных функций есть ряд необычных и менее известных инструментов, которые могут значительно улучшить ваш рабочий процесс и повысить производительность. Рассмотрим некоторые из этих скрытых жемчужин Android Studio.

App Quality Insights

App Quality Insights — это инструмент в Android Studio, который тесно интегрируется с Firebase Crashlytics, предоставляя расширенные возможности для отслеживания, анализа и устранения сбоев в ваших приложениях.

App Quality Insights использует данные, собранные Firebase Crashlytics, для выявления и анализа сбоев и исключений в ваших приложениях. Он предоставляет подробную информацию о каждом сбое, включая:

  • стек вызовов;

  • логи устройства;

  • пользовательские данные.

После входа в систему Android Studio загрузит последние данные о сбоях для вашего приложения, отсортированные по частоте. При нажатии на конкретную проблему отображается подробная информация, включая пример трассировки стека, затронутые устройства и версии Android. С помощью окна App Quality Insights вы можете перейти от отчёта о сбое к соответствующей строке кода. Также можно закрывать issue прямо из Android Studio.

App Quality Insights: окно просмотра проблемы.
App Quality Insights: окно просмотра проблемы.

App Links Assistant

App Links Assistant — удобный инструмент для создания и управления deeplinks в приложениях. Он также автоматически создаёт файлы манифеста приложения и обрабатывает необходимую конфигурацию для обеспечения правильной работы глубоких ссылок.

Плагины в Android Studio

Возможности Android Studio можно ещё больше расширить с помощью плагинов, которые добавляют новые функции и улучшают рабочий процесс.

Плагины для Android Studio — это небольшие программы, написанные на Java или Kotlin, которые интегрируются с IDE и расширяют её функциональность. Они могут выполнять различные задачи, такие как:

  • автоматизация задач;

  • улучшение навигации по коду;

  • добавление новых инструментов редактирования и отладки;

  • интеграция с внешними сервисами и инструментами;

  • расширение возможностей пользовательского интерфейса.

Используя плагины, разработчики могут настроить Android Studio в соответствии со своими конкретными потребностями и предпочтениями. Плагины могут значительно улучшить производительность, сэкономить время и упростить процесс разработки приложений для Android. Для начала напомню, где они находятся, не благодарите :)

Путь до плагинов.
Путь до плагинов.

Kotlin Fill class

Плагин Kotlin Fill Class автоматически заполняет классы Kotlin данными из различных источников и генерирует методы на основе этих данных, а также добавляет имена параметров. Плагин экономит время и повышает производительность, устраняя необходимость заполнять вручную, обеспечивая при этом согласованность и качество кода.

Randomness

Вам нужно добавить в проект случайные данные, например, слово, число или строку? И у вас закончились варианты... Установите этот плагин, и увидите выпадающий список возможных типов данных, которые вы можете добавить. Выберите нужный, и тогда произойдёт волшебство — Randomness будет добавлять разные значения каждый раз, когда вы применяете это действие.

Key Promoter X

Не секрет, что программирование без использования мыши быстрее и эффективнее, но как стать ориентированным на клавиатуру, когда в IntelliJ IDEA так много сочетаний клавиш, которые нужно запомнить? Key Promoter X научит вас пользоваться ими. Как настойчивый и дотошный тренер, он отобразит всплывающую подсказку с соответствующим сочетанием клавиш при нажатии на элемент внутри IDE. Более того, для кнопок, не имеющих сочетания, Key Promoter X предложит создать его.

JSON to Kotlin Class

Плагин JSON to Kotlin Class преобразует JSON в data-классы Kotlin со всеми видами конфигураций, таких как добавление аннотации, внутренние классы для вложенных объектов и многое другое.

Плагин "JSON to Kotlin Class"

String Manipulation

Плагин String Manipulation — это незаменимый инструмент для разработчиков, которым необходимо выполнять сложные манипуляции со строками. Этот плагин предоставляет более 150 функций для работы со строками, включая: переключение регистра (camelCase, snake_case и т. д.), сортировка, реверс, выравнивание и перемешивание, поиск и замена с использованием регулярных выражений, объединение и разделение строк, удаление дубликатов и пустых строк и т. д.

Open current Activity

Плагин Open Current Activity для Android Studio — это удобный инструмент, который позволяет разработчикам быстро открывать текущую активность на экране устройства или эмулятора в представлении Kotlin- или Java-файла. Этот плагин экономит время и повышает производительность, устраняя необходимость вручную искать активность в большом многомодульном проекте. Наконец-то закончатся вечные поиски по строковым ресурсам, чтобы найти нужное окно...

Generate Module From Template

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

Чтобы избавиться от этой рутины, можно использовать плагин для Android Studio под названием «Generate Module From Template». Он позволяет создавать классы из предварительно подготовленных шаблонов всего за пару кликов. Использование плагина «Generate Module From Template» позволяет:

  • сэкономить время на рутинной работе;

  • избежать ошибок при создании новых классов;

  • обеспечить единообразие структуры и именования в проекте;

  • быстро создавать новые модули приложения.

Custom Progress Bar

Также вы можете стилизовать Студию под себя и своё настроение, например, настроив кастомный индикатор прогресса. Вариаций таких плагинов множество, на любой вкус и цвет.

Pets

Если вам одиноко… и не с кем поговорить… то можете завести питомца прямо в Студии. Домашнее животное ходит, сидит, следует за курсором, общается с вами. Варианты питомцев: 5 кошек, кролик, курица, ёжик, 5 собак. Это довольно популярный плагин, около 40 тысяч установок :)

AI-помощники

По мере того, как искусственный интеллект становится всё более распространённым, он также оказывает значительное влияние на разработку программного обеспечения. Плагины с поддержкой искусственного интеллекта для Android Studio предоставляют разработчикам мощные инструменты для автоматизации задач, улучшения качества кода и повышения общей производительности. Эти плагины используют передовые алгоритмы машинного обучения для анализа кода, выявления ошибок и интеллектуальных предложений.

Codiumate

Codiumate — это плагин для Android Studio, который помогает разработчикам повысить производительность и качество кода. Включает в себя инструмент анализа кода, который выявляет потенциальные проблемы, такие как неиспользуемые переменные и утечки памяти, используя алгоритмы и техники анализа кода.

Кроме того, Codiumate использует технологию ИИ для оптимизации кода и повышения производительности приложения.

Ещё одной полезной особенностью плагина является генерация тестов с разными сценариями.

Плагин "Codiumate": генерация тестов.
Плагин "Codiumate": генерация тестов.

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

ChatGPT - EasyCode

Этот плагин, как понятно из названия, позволяет удобно работать с кодом. Можно просить ChatGPT объяснить, что делают некоторые функции, или сгенерировать тесты, или написать код. И также можно делать запросы к ChatGPT в свободной форме. Главная особенность плагина — это неограниченное количество запросов.

ChatGPT — это мощная языковая модель, которая может быть использована различными способами для помощи разработчикам. Чтобы получить точный и релевантный ответ, следует помнить некоторые правила:

  • Предоставляйте четкие и конкретные промты, подробно описывающие задачу или проблему, которую вы пытаетесь решить.

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

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

  • Перед использованием результатов, полученных с помощью ChatGPT, важно протестировать их, чтобы убедиться в том, что они точны и соответствуют вашим требованиям. При необходимости внесите коррективы в виде подсказки для ChatGPT, это поспособствует переобучению модели.

  • Убедитесь, что вы используете правильные обучающие данные, соответствующие поставленной задаче.

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

Музыка

Музыка — это тоже инструмент! И его можно настроить в режим продуктивности.

Разработчики часто сталкиваются с повторяющимися задачами, такими как тестирование кода, которые могут быть утомительными и скучными. Однако, исследования британской инициативной группы разработчиков показали, что музыка может помочь сохранить мозг в напряжении и предотвратить переутомление. Исследовательская группа прослушала миллионы часов музыки, протестировала её на программистах и пришла к выводу, что музыка для продуктивной работы должна содержать шум, гам и вибрации, но не должна содержать ритма, слов и барабанов. Такая музыка может ввести вас в рабочий транс и загипнотизировать участки мозга, которые могут начать саботировать работу, пытаясь отвлечь вас от неё. Вот некоторые примеры таких треков:

Заключение

Инструменты, описанные в этой статье, предоставляют Android-разработчикам мощные возможности для повышения эффективности и производительности. Используя эти инструменты, разработчики могут автоматизировать задачи, выявлять ошибки и оптимизировать производительность приложений. Это приводит к сокращению времени разработки, повышению качества приложений и большей удовлетворенности пользователей.

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

Комментарии (7)


  1. itmind
    25.06.2024 11:51
    +1

    Что лучше из AI использовать: Codiumate или Сodeium ?


    1. NastyaSimonova Автор
      25.06.2024 11:51
      +1

      Основное различие между ними заключается в том, что Codiumate использует собственные модели машинного обучения, обученные на открытом исходном коде, в то время как Codeium использует более общие модели языка, такие как GPT-3. 

      У меня не работает Сodeium, поэтому использую первый. Также хочу отметить что с этими плагинами нужно очень аккуратно работать, так как нейросети могут сохранять код и данные в своей базе для дальнейшего переобучения, поэтому не следует использовать эти плагины на корпоративных проектах.


  1. maxsmirnov92
    25.06.2024 11:51
    +1

    Статься полезная, несколько плагинов забрал :)

    "Open current Activity" имхо довольно бесполезный инструмент (если я правильно его понял), т.к. в большинстве проектов понятие "экран" уже давно прочно ассоциируется с фрагментом. Которые, скорее всего, будут в одном navigation для главной активити. Остальные, если и будут, то в рамках переходов к новым фича-модулям, где также свой набор фрагментов, или во внешние активити.

    А "Key Promoter X" буду пользовать, хотя в большинстве случаев всё равно буду забивать на комбинации, т.к. помимо того, что это дело привычки, экономию времени оно даёт не всегда...

    Насчёт музыки: мне подходит в лучшем случае только эмбиент. В основном же в тишине клацаю, т.к. при наличии музыки голова частично отключается от кода.

    И не подскажете, есть ли отдельно плагины для работы с SQLite и DataStore из аппа? Чтобы руками не лазить в /data/data.


    1. NastyaSimonova Автор
      25.06.2024 11:51

      Спасибо за обратную связь!

      Видила что что есть плагины для работы с SQLite, можно найти тут https://plugins.jetbrains.com/search?products=androidstudio&search=SQLite


  1. BorisShumai
    25.06.2024 11:51

    Подборка интересная.

    Позволяют ли эти инструменты помочь понять, как прокидывать аргументы при переходе в ипотечный калькулятор в приложении домклик под Андроид?


  1. duna_moroz
    25.06.2024 11:51
    +1

    Спасибо за подборку! И за плейлист, креативный подход к завершению статьи!


    1. NastyaSimonova Автор
      25.06.2024 11:51

      Спасибо Вам :)