Набор полезных, но не очень известных инструментов и библиотек Android.
Работая над статьями о 30 лучших библиотеках и проектах Android 2019 г. и 25 лучших библиотеках и проектах Android 2020 г., я наткнулся на множество замечательных инструментов и проектов, которые могут пригодиться в разработке приложений для Android — ниже они приведены в случайном порядке. Пользуйтесь.
1. AinD — Android (Anbox) в Докере
AinD запускает приложения Android, помещая контейнеры Anbox в Докер.
В отличие от аналогичных проектов на основе виртуальных машин, AinD может выполняться на экземплярах IaaS без поддержки вложенной виртуализации. Docker Hub: aind/aind
.
Предназначение:
Защита от кражи (см. часто задаваемые вопросы)
Совместимость с Android (через облако) для планшетов на iOS и Windows
2. Booster
Booster — очень интересный инструмент: это простой в использовании, легкий, функциональный, расширяемый набор инструментов для повышения качества, предназначенный специально для мобильных приложений. Основная задача проекта — решать вопросы качества, связанные с повышением сложности приложения — например, проблемы производительностью, стабильностью и размером пакета.
Booster — это набор модулей для оценки производительности, оптимизации многопоточности, встроенного индекса ресурсов, сокращения числа избыточных ресурсов, сжатия ресурсов, исправления системных ошибок и т. д. Booster позволяет повысить стабильность приложения на 15–25% и снизить размер пакета на 1–10 МБ.
Документация очень хорошая, лицензия — Apache 2.0.
3. Shake
Shake — один из лучших инструментов для обнаружения ошибок, изучения действий пользователя для воспроизведения ошибки и сбора скриншотов или видео с ошибками. Благодаря ему работа с ошибками при бета-тестировании и в публичной версии сильно упрощается — инструмент определенно стоит того, чтобы попробовать.
Как показано на гифке выше, если встряхнуть устройство, появится запрос с шаблоном для отправки отчета об ошибке. Пользователь может пометить ошибку, замаскировать конфиденциальные данные, описать проблему и отправить вам отчет.
Устанавливается эта штука просто, в документации всё отлично описано. Кроме того, есть интерактивная демонстрация, которая показывает работу инструмента изнутри.
4. Scabbard
Scabbard помогает с визуализацией и анализом графика зависимостей Dagger 2.
Scabbard визуализирует точки входа, схемы зависимостей, взаимосвязи компонентов и области действия. Добавить этот инструмент в проект очень легко: он хорошо интегрирован с Gradle, а также с Android Studio и IntelliJ (нажав значок на левом поле в редакторе, можно просмотреть схему для @Component
или @Subcomponent
).
Документирован проект отлично: есть множество примеров и подсказок.
Лицензия — Apache 2.0.
5. Can I Drop Jetifier?
Как известно, иногда перейти со старой библиотеки поддержки на AndroidX не так просто, особенно в крупных проектах с большим количеством устаревшего кода. Успех перехода во многом зависит от использования инструмента Jetifier (преобразует зависимости, которым для работы с классами AndroidX всё еще требуются старые артефакты), который замедляет сборку.
«Всё больше и больше библиотек переходят на AndroidX, поэтому в какой-то момент необходимость включать этот инструмент отпадает. Этот плагин определяет, какие из используемых библиотек нужно перенести на AndroidX — или избавиться от них, если уже вышла новая версия», — Can I Drop Jetifier?
Документация понятная, проект выпущен под лицензией Apache 2.0. Очень рекомендую!
6. ADB Event Mirror
ADB Event Mirror позволяет отражать события касания экрана, нажатия клавиш и кнопок одного устройства на одно или несколько других устройств в реальном времени.
«Этот сценарий не адаптирует разрешение, плотность пикселей, ориентацию и макет приложения. Поэтому лучше всего он работает с эмуляторами, созданными с одинаковой конфигурацией», — ADB Event Mirror
Инструмент дает возможность протестировать приложение одновременно на эмуляторах различных типов.
7. Android Emulator Container Scripts
Android Emulator Container Scripts — набор небольших сценариев для запуска эмулятора в контейнере для различных систем (например, для Докера) с целью внешнего использования. Сценарии совместимы с Python версий 2 и 3. Этот репозиторий довольно популярен и пригодится, если нужно запускать много эмуляторов на удаленных машинах.
Проект выпущен под лицензией Apache 2.0 и хорошо документирован.
8. Autoplay
Autoplay — это плагин для Gradle, предназначенный для публикации артефактов Android в Google Play.
Его можно считать очень простой альтернативой Gradle Play Publisher или Fastlane. Опубликовать приложение можно как apk
или набор App Bundle.
Особенности Autoplay:
Оптимизирован для использования в CI/CD.
Удобен для разработчиков.
Надежен и перспективен.
У проекта хорошая документация, версия на момент написания статьи — 1.3.0
, лицензия — Apache 2.0.
9. Плагин Gradle для статического анализа
Плагин статического анализа Gradle — комплексная замена для всех значимых инструментов статического анализа кода, включает в себя следующее:
FindBugs [ПОДДЕРЖКА ПРЕКРАЩЕНА] [удален в Gradle 6.0]
Смысл в том, что вам не нужно будет настраивать все эти инструменты самостоятельно — их можно без особых усилий включить в свою кодовую базу. Плагин выпущен под лицензией Apache 2.0 и отлично документирован (есть даже пример проекта).
10. AndroidUtilCode
AndroidUtilCode — функциональная и простая в использовании библиотека для Android, которая инкапсулирует функции, обычно используемые при разработке Android с демонстрационными версиями и модульными тестами. Инкапсулированные API позволяют значительно повысить эффективность разработки.
Проект состоит в основном из двух модулей: utilcode (используется в разработке часто) и subutil (используется редко, но позволяет упростить основной модуль).
Версия проекта — 1.29.0
, лицензия — Apache 2.0.
11. Hijckr
«Hijckr вмешивается в инфляцию макета Android и перенаправляет названные элементы в другие классы».
Это довольно интересный инструмент. Например, если файл макета содержит TextView
, Android обычно загружает android.widget.TextView
, но вместо этого можно перехватить xml
-теги и загрузить com.myapp.TextView
.
Описание проекта довольно подробное и позволяет быстро начать работу с инструментом (который полностью написан на Java).
12. Roomigrant
Roomigrant — это вспомогательная библиотека для автоматической генерации миграций библиотеки Android Room с использованием формирования кода во время компиляции. Она использует созданные библиотекой Room файлы схемы и генерирует миграции на основе разницы между ними — то есть, создание схемы Room должно быть включено в файле build.gradle
, что хорошо описано в README.
Проект выпущен под лицензией MIT, версия 0.1.7
.
13. RoomExplorer
После переноса базы данных на Room неплохо бы просмотреть ее: RoomExplorer позволяет просматривать все данные таблиц в табличном формате, удалять таблицы, вставлять, изменять и удалять строки и т. д.
Инструмент хорошо документирован, лицензия — Apache 2.0.
14. Android Framer
Инструмент android-framer добавляет рамки и заголовки к скриншотам в Google Play. Источник вдохновения — fastlane frameit.
Инструмент написан на Python и использует ImageMagick. Настроить рамки (фоны) можно, например, с помощью Facebook Design. Также можно менять шрифт, кегль, размер рамки и т. д.
Лицензия — Apache 2.0.
15. Dependency Tree Diff
Dependency Tree Diff — это «интеллектуальный инструмент сравнения для вывода задачи dependencies
Gradle, который всегда показывает путь к корневой зависимости».
Можно установить инструмент через brew
или просто использовать jar
-файл.
Лицензия — Apache 2.0.
16. Gradle Doctor
Gradle Doctor — это плагин для сканирования сборки Gradle. Функциональность: настраиваемые предупреждения о проблемах со скоростью сборки, измерение временны?х затрат на инструменты обработки аннотаций Dagger, установка переменной JAVA_HOME
и проверка ее соответствия JAVA_HOME
в IDE, простое отключение кеширования тестов, остановка сборки в случае, если найдены пустые каталоги src
(поскольку это может быть причиной несовпадений в кеше), и многое другое.
У инструмента отличная документация, проект выпущен под лицензией Apache 2.0.
17. GloballyDynamic
GloballyDynamic — это «набор инструментов, направленных на обеспечение всеобщей доступности Dynamic Delivery, независимо от магазина приложений или платформы распространения, которые также предоставляют единый унифицированный клиентский API для Android и простой интерфейс для разработчиков».
Поддерживаются:
Google Play (Play Feature Delivery)
Huawei App Gallery (Dynamic Ability).
Большинство других платформ — в сочетании с сервером GloballyDynamic (например, Amazon App Store, Samsung Galaxy Store, Firebase App Distribution или локальная разработка).
Рекомендую прочитать README и подробнее ознакомиться с этим инструментом.
Лицензия — Apache 2.0.
18. Dagger Browser
Dagger Browser — еще один инструмент (прогрессивное веб-приложение) для удобной навигации по схеме Dagger в проекте.
«Данные схемы заполняются с помощью SPI-плагина Dagger, а средство просмотра написано с помощью CRA (create-react-app) и TypeScript», — Dagger Browser
Есть и пример приложения, в котором показано, как инструмент работает. Всё это выпущено под трехпунктовой лицензией BSD.
19. Wormhole
Wormhole — «путешествующий во времени инструмент преобразования байт-кода, добавляющий в android.jar
будущие API-интерфейсы, которые можно десахаризовать на все уровни API с помощью D8 и R8».
Wormhole обеспечивает обратную совместимость с более новыми API. Приведу пример.
«В Android R есть новые методы из Java 9 — например,
List.of
. Благодаря D8 и R8 они не являются эксклюзивными для API 30 и мгновенно превращаются в совместимые с API 1. В D8 и R8 есть набор методов десахаризации для API, которых еще нет вandroid.jar
. И можно не ждать, пока они появятся — этот проект дает возможность использовать их сразу же».
20. MNML
MNML (произносится как «minimal» — «минимальный») — простое бесплатное приложение для записи экрана в Android.
Конечно, приложений и инструментов, обеспечивающих такую функциональность, множество. Сегодня функция записи экрана встроена во все новые устройства, но если вам интересно посмотреть, как реализовать такое приложение, этот проект будет отличным примером.
Лицензия — Apache 2.0.
Заключение
Вот и всё. Надеюсь, список вам понравился и какие-то инструменты смогли вас вдохновить. До встречи!
О переводчике
Перевод статьи выполнен в Alconost.
Alconost занимается локализацией игр, приложений и сайтов на 70 языков. Переводчики-носители языка, лингвистическое тестирование, облачная платформа с API, непрерывная локализация, менеджеры проектов 24/7, любые форматы строковых ресурсов.
Мы также делаем рекламные и обучающие видеоролики — для сайтов, продающие, имиджевые, рекламные, обучающие, тизеры, эксплейнеры, трейлеры для Google Play и App Store.