Инструменты Android-разработчика |
01.08.2024 00:00 |
Будь эффективным — используй «туллинг»! Доброго дня, читатель! Меня зовут Симонова Анастасия и я Android‑разработчик в команде мобильного приложения Домклик. Разработка мобильных приложений для Android — это увлекательный, но зачастую трудоёмкий процесс. Успех вашего проекта во многом зависит от эффективности используемых инструментов и рабочих процессов. Как разработчик, я знаю, насколько важно иметь под рукой правильный набор инструментов, которые помогают повышать продуктивность, улучшать качество кода и ускорять процесс разработки. Хочу поделиться своим опытом и рассказать о наиболее полезных инструментах, которые я использую в своей повседневной работе. Мы рассмотрим как широко известные, так и менее популярные, но не менее ценные утилиты, которые помогут вам стать более эффективным Android‑разработчиком. Оглавление Библиотеки для отладкиОдним из важнейших аспектов разработки Android-приложений является отладка и поиск ошибок. Когда ваше приложение сталкивается с проблемами, будь то падения, ошибки в логике или нехватка производительности, вам необходимо быстро и эффективно найти и устранить их. Для этого в арсенале разработчика должны быть мощные инструменты, которые помогут глубоко проанализировать состояние вашего приложения. ChuckerЗачастую при разработке и тестировании функциональности приложений мы сталкиваемся с ошибками на стороне бэкенда. Неверные ответы от API, некорректные данные, непредвиденные ошибки — всё это может вызывать проблемы в работе мобильного клиента и требует тщательной отладки. Традиционно для этого используют различные HTTP‑клиенты, сетевые анализаторы и перехватчики трафика, чтобы понять, что происходит «под капотом» приложений. Chucker — это библиотека, упрощающая анализ HTTP-запросов/ответов и ошибок, которые возникают в Android-приложениях. Когда приложение делает сетевые запросы, Chucker перехватывает их и ответы с помощью OkHttp Interceptor. Также можно выгружать лог по запросу и делиться диагностикой с коллегами. Будет очень полезно для разработчиков и QA-инженеров, а также всех, кто участвует в тестировании мобильного приложения. Уникальность библиотеки в том, что нам не нужен доступ к настольным программам, чтобы смотреть логи запросов, мы можем это делать прямо на устройстве. LeakCanaryУтечки памяти — это, пожалуй, одни из самых коварных ошибок, с которыми сталкиваются разработчики. Эти незаметные «вредители» могут тихо подкрадываться к вашему приложению, тайно поедая ресурсы устройства и приводя к лагам, а то и к полному падению. Несмотря на все ваши старания по написанию чистого и аккуратного кода, человеческий фактор всегда даёт о себе знать, и утечки памяти всё равно рано или поздно всплывают. Ещё хуже, когда эти проблемы кроются в сторонних библиотеках, которые вы используете в своём проекте. Вот тут уже и вовсе сложно их отловить, особенно если вы не обладаете навыками глубокого анализа дампов памяти или не мониторите постоянно потребление памяти в IDE. LeakCanary — библиотека, позволяющая в фоновом режиме находить утечки памяти во время работы приложения. При этом со стороны клиента ничего делать не нужно, просто укажите библиотеку в зависимостях Gradle, и она сама всё сделает. FlipperЕщё один мощный инструмент в арсенале разработчика мобильных приложений. Если Chucker специализируется только на анализе сетевого трафика, то Flipper предлагает гораздо более широкий спектр возможностей для комплексной отладки и мониторинга приложений. Программа включает в себя множество плагинов, которые позволяют детально исследовать различные аспекты работы приложения:
Одно из ключевых преимуществ Flipper — это его расширяемость. Разработчики могут создавать собственные плагины, адаптируя инструмент под нужды своего проекта. Это делает Flipper универсальным решением, которое может применяться на различных этапах разработки и тестирования приложений. Фермы устройств В мире разработки мобильных приложений одной из постоянных головных болей для разработчиков является необходимость тестирования своих приложений на множестве устройств, различающихся по размеру экрана, производительности, версии операционной системы и другим характеристикам. Один из подходов, который помогает решить эту проблему, — это использование так называемых «ферм устройств». Это специальные лаборатории, оснащённые множеством реальных гаджетов, на которых разработчики могут тестировать свои приложения. Такие фермы позволяют быстро и эффективно проверить работоспособность приложения на широком спектре аппаратных и программных конфигураций, выявляя и устраняя различные проблемы совместимости. STFСамым безопасным решением будет поднятие фермы в корпоративной инфраструктуре. Корпоративные серверы, как правило, обеспечивают высокий уровень безопасности, включая защиту от несанкционированного доступа и шифрование данных. Развёртывая ферму устройств на таких серверах, разработчики могут быть уверены, что конфиденциальные данные их приложений, а также информация о тестовых устройствах будут надёжно защищены от утечек и кражи. Кроме того, корпоративная ИТ-инфраструктура обычно характеризуется высокой доступностью и отказоустойчивостью, что гарантирует бесперебойную работу фермы устройств даже в случае сбоев или аварий. Это особенно важно для крупных проектов, где простои могут привести к значительным задержкам и финансовым потерям. Одним из популярных инструментов для организации такой корпоративной фермы является STF (Sauce Labs Test Framework). Это веб-приложение, которое позволяет удалённо управлять и тестировать устройства прямо из браузера. Все, кто участвует в тестировании приложений, могут подключаться к ферме, запускать на устройствах свои тесты, отлаживать приложения и анализировать результаты, не покидая рабочего места. Подробная инструкция по установке описана на гитхабе. Ключевые преимущества использования STF:
Samsung Remote Test LabЕсли у вас нет возможности использовать корпоративные серверы, вам могут потребоваться альтернативные решения, которые являются более гибкими и работают в других условиях, например, облачные сервисы или локальные серверы. Одно из таких решений предоставляет нам Samsung. Samsung Remote Test Lab — это бесплатный сервис, который позволяет разработчикам тестировать приложения удалённо в виртуальном режиме, на тысячах реальных устройств сотен моделей семейства Samsung Galaxy без приобретения оборудования. Для работы в сервисе требуется Samsung Account. После входа даётся 20 кредитов для аренды устройств. Ежедневно вы получаете ещё 10 кредитов, которые эквивалентны пяти часам аренды любых устройств в выбранном регионе. Список доступных моделей в каждом регионе отличается. При подготовке статьи я столкнулась с проблемой: мой аккаунт Samsung был заблокирован, а создание нового на территории Российской Федерации в настоящее время невозможно. Это ограничение создаёт неудобства для пользователей, и, возможно, в будущем мы снова сможем наслаждаться преимуществами этого замечательного сервиса. Однако, на данный момент приходится искать альтернативные решения. BrowserStackОдной из таких альтернатив облачной фермы устройств является BrowserStack. BrowserStack — ведущий провайдер облачных решений для тестирования приложений и веб‑браузеров. Он предоставляет полный спектр возможностей для выполнения исчерпывающих тестов, экономя время и ресурсы разработчиков. Сервис предлагает широкий выбор Android и iOS-устройств, а также различных версий браузеров. Эта функция позволяет тестировать на различных платформах и конфигурациях. Сервис позволяет делать снимки экрана и видеозаписи, чтобы документировать и анализировать результаты тестирования. Сервис BrowserStack имеет платную и бесплатную версии. Основным ограничением бесплатного режима является длительность сессии — всего 2 минуты. Это может создавать определённые неудобства для пользователей, которым нужно больше времени для тестирования приложений. Также ограничения касаются количества доступных устройств для тестирования. BrowserStack доступен и работает на территории РФ. GenymotionВ качестве локальной фермы устройств подойдёт решение на основе Virtual Box — Genymotion. Оно виртуализирует, а не эмулирует Android, обеспечивая ощутимый прирост производительности. Его легко настроить и пользоваться. Genymotion предлагает большой выбор устройств с различными версиями Android и разными характеристиками. Это позволяет проверять работу приложения на различных конфигурациях. Виртуальные устройства в Genymotion работают достаточно быстро и плавно, что позволяет тестировать без задержек. Также устройства подключаются к Android Studio. Сервис Genymotion имеет платную и бесплатную версии. Главный плюс платной версии в том, что она позволяет запускать виртуальные устройства в облаке, легко масштабируя тестовую среду и управляя большим количеством устройств. Моковые API-серверыВ мире разработки программного обеспечения API-серверы играют жизненно важную роль в предоставлении функциональности и данных приложениям. Однако во время разработки и тестирования часто бывает необходимо имитировать поведение реального апи, чтобы протестировать поведение в различных условиях, а также при распараллеливании разработки бэкенда и фронтенда. Моковые API‑серверы позволяют решить эту задачу. Они являются подделками, которые эмулируют поведение реального API‑сервера, позволяя разработчикам имитировать различные сценарии и проверять ожидаемое поведение приложения. WireMock CloudОдним из таких популярных инструментов является WireMock Cloud. Он позволяет создавать заглушки (mocks) для API, определять ожидаемые запросы и ответы, настраивать поведение сервиса, включая задержки, ошибки и многое другое. Это делает его мощным инструментом для тестирования как на начальных стадиях разработки, так и на более поздних этапах, когда требуется проверка взаимодействия между компонентами приложения. WireMock Cloud — это облачная платформа, которая предоставляет возможность создания виртуальных HTTP-сервисов без установки и настройки инфраструктуры на стороне пользователя. Сервис WireMock Cloud имеет платную, бесплатную и нативную версии. Ограничения бесплатной версии:
Таким образом, бесплатный план WireMock Cloud подходит для простых прототипов и небольших проектов. Если вам нужны более широкие возможности, придётся перейти на платный план или локальную версию WireMock. Как развернуть WireMock локально, подробно описано в этой статье. Необычные инструменты Android StudioAndroid Studio — это мощная интегрированная среда разработки, которая предлагает широкий спектр инструментов для создания приложений под Android. Однако помимо общеизвестных функций есть ряд необычных и менее известных инструментов, которые могут значительно улучшить ваш рабочий процесс и повысить производительность. Рассмотрим некоторые из этих скрытых жемчужин Android Studio. App Quality InsightsApp Quality Insights — это инструмент в Android Studio, который тесно интегрируется с Firebase Crashlytics, предоставляя расширенные возможности для отслеживания, анализа и устранения сбоев в ваших приложениях. App Quality Insights использует данные, собранные Firebase Crashlytics, для выявления и анализа сбоев и исключений в ваших приложениях. Он предоставляет подробную информацию о каждом сбое, включая:
После входа в систему Android Studio загрузит последние данные о сбоях для вашего приложения, отсортированные по частоте. При нажатии на конкретную проблему отображается подробная информация, включая пример трассировки стека, затронутые устройства и версии Android. С помощью окна App Quality Insights вы можете перейти от отчёта о сбое к соответствующей строке кода. Также можно закрывать issue прямо из Android Studio. App Links AssistantApp 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 со всеми видами конфигураций, таких как добавление аннотации, внутренние классы для вложенных объектов и многое другое. 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 предоставляют разработчикам мощные инструменты для автоматизации задач, улучшения качества кода и повышения общей производительности. Эти плагины используют передовые алгоритмы машинного обучения для анализа кода, выявления ошибок и интеллектуальных предложений. CodiumateCodiumate — это плагин для Android Studio, который помогает разработчикам повысить производительность и качество кода. Включает в себя инструмент анализа кода, который выявляет потенциальные проблемы, такие как неиспользуемые переменные и утечки памяти, используя алгоритмы и техники анализа кода. Кроме того, Codiumate использует технологию ИИ для оптимизации кода и повышения производительности приложения. Ещё одной полезной особенностью плагина является генерация тестов с разными сценариями. < Codiumate повышает производительность разработчиков, помогая им выявлять и исправлять проблемы в коде, а также оптимизировать его производительность с помощью функций анализа кода на основе искусственного интеллекта. ChatGPT - EasyCodeЭтот плагин, как понятно из названия, позволяет удобно работать с кодом. Можно просить ChatGPT объяснить, что делают некоторые функции, или сгенерировать тесты, или написать код. И также можно делать запросы к ChatGPT в свободной форме. Главная особенность плагина — это неограниченное количество запросов. ChatGPT — это мощная языковая модель, которая может быть использована различными способами для помощи разработчикам. Чтобы получить точный и релевантный ответ, следует помнить некоторые правила:
МузыкаМузыка — это тоже инструмент! И его можно настроить в режим продуктивности. Разработчики часто сталкиваются с повторяющимися задачами, такими как тестирование кода, которые могут быть утомительными и скучными. Однако, исследования британской инициативной группы разработчиков показали, что музыка может помочь сохранить мозг в напряжении и предотвратить переутомление. Исследовательская группа прослушала миллионы часов музыки, протестировала её на программистах и пришла к выводу, что музыка для продуктивной работы должна содержать шум, гам и вибрации, но не должна содержать ритма, слов и барабанов. Такая музыка может ввести вас в рабочий транс и загипнотизировать участки мозга, которые могут начать саботировать работу, пытаясь отвлечь вас от неё. Вот некоторые примеры таких треков: ЗаключениеИнструменты, описанные в этой статье, предоставляют Android-разработчикам мощные возможности для повышения эффективности и производительности. Используя эти инструменты, разработчики могут автоматизировать задачи, выявлять ошибки и оптимизировать производительность приложений. Это приводит к сокращению времени разработки, повышению качества приложений и большей удовлетворенности пользователей. Помимо инструментов, описанных в данной статье, существует множество других полезных инструментов, а также с каждым днём появляется множество новых. Эти инструменты могут предлагать дополнительные возможности и решения, которые могут быть полезны для разработчиков в зависимости от их конкретных потребностей и рабочих процессов. |