Работая над статьями о 30 лучших библиотеках и проектах Android 2019 г. и 25 лучших библиотеках и проектах Android 2020 г., я наткнулся на множество замечательных инструментов и проектов, которые могут пригодиться в разработке приложений для Android — ниже они приведены в случайном порядке. Пользуйтесь.    AinD запускает приложения Android, помещая контейнеры Anbox в Докер. В отличие от аналогичных проектов на основе виртуальных машин, AinD может выполняться на экземплярах IaaS без поддержки вложенной виртуализации. Docker Hub: aind/aind. Предназначение: Защита от кражи (см. часто задаваемые вопросы) Совместимость с Android (через облако) для планшетов на iOS и Windows   Booster — очень интересный инструмент: это простой в использовании, легкий, функциональный, расширяемый набор инструментов для повышения качества, предназначенный специально для мобильных приложений. Основная задача проекта — решать вопросы качества, связанные с повышением сложности приложения — например, проблемы производительностью, стабильностью и размером пакета. Booster — это набор модулей для оценки производительности, оптимизации многопоточности, встроенного индекса ресурсов, сокращения числа избыточных ресурсов, сжатия ресурсов, исправления системных ошибок и т. д. Booster позволяет повысить стабильность приложения на 15–25% и снизить размер пакета на 1–10 МБ. Документация очень хорошая, лицензия — Apache 2.0.   Shake — один из лучших инструментов для обнаружения ошибок, изучения действий пользователя для воспроизведения ошибки и сбора скриншотов или видео с ошибками. Благодаря ему работа с ошибками при бета-тестировании и в публичной версии сильно упрощается — инструмент определенно стоит того, чтобы попробовать. Как показано на гифке выше, если встряхнуть устройство, появится запрос с шаблоном для отправки отчета об ошибке. Пользователь может пометить ошибку, замаскировать конфиденциальные данные, описать проблему и отправить вам отчет. Устанавливается эта штука просто, в документации всё отлично описано. Кроме того, есть интерактивная демонстрация, которая показывает работу инструмента изнутри.    Scabbard помогает с визуализацией и анализом графика зависимостей Dagger 2. Scabbard визуализирует точки входа, схемы зависимостей, взаимосвязи компонентов и области действия. Добавить этот инструмент в проект очень легко: он хорошо интегрирован с Gradle, а также с Android Studio и IntelliJ (нажав значок на левом поле в редакторе, можно просмотреть схему для @Component или @Subcomponent). Документирован проект отлично: есть множество примеров и подсказок.  Лицензия — Apache 2.0.       Как известно, иногда перейти со старой библиотеки поддержки на AndroidX не так просто, особенно в крупных проектах с большим количеством устаревшего кода. Успех перехода во многом зависит от использования инструмента Jetifier (преобразует зависимости, которым для работы с классами AndroidX всё еще требуются старые артефакты), который замедляет сборку. «Всё больше и больше библиотек переходят на AndroidX, поэтому в какой-то момент необходимость включать этот инструмент отпадает. Этот плагин определяет, какие из используемых библиотек нужно перенести на AndroidX — или избавиться от них, если уже вышла новая версия», — Can I Drop Jetifier? Документация понятная, проект выпущен под лицензией Apache 2.0. Очень рекомендую!       ADB Event Mirror позволяет отражать события касания экрана, нажатия клавиш и кнопок одного устройства на одно или несколько других устройств в реальном времени. «Этот сценарий не адаптирует разрешение, плотность пикселей, ориентацию и макет приложения. Поэтому лучше всего он работает с эмуляторами, созданными с одинаковой конфигурацией», — ADB Event Mirror Инструмент дает возможность протестировать приложение одновременно на эмуляторах различных типов.       Android Emulator Container Scripts — набор небольших сценариев для запуска эмулятора в контейнере для различных систем (например, для Докера) с целью внешнего использования. Сценарии совместимы с Python версий 2 и 3. Этот репозиторий довольно популярен и пригодится, если нужно запускать много эмуляторов на удаленных машинах. Проект выпущен под лицензией Apache 2.0 и хорошо документирован.       Autoplay — это плагин для Gradle, предназначенный для публикации артефактов Android в Google Play.  Его можно считать очень простой альтернативой Gradle Play Publisher или Fastlane. Опубликовать приложение можно как apk или набор App Bundle.  Особенности Autoplay: Оптимизирован для использования в CI/CD. Удобен для разработчиков. Надежен и перспективен. У проекта хорошая документация, версия на момент написания статьи — 1.3.0, лицензия — Apache 2.0.       Плагин статического анализа Gradle — комплексная замена для всех значимых инструментов статического анализа кода, включает в себя следующее: Checkstyle PMD FindBugs [ПОДДЕРЖКА ПРЕКРАЩЕНА] [удален в Gradle 6.0] SpotBugs Detekt Android Lint KtLint Смысл в том, что вам не нужно будет настраивать все эти инструменты самостоятельно — их можно без особых усилий включить в свою кодовую базу. Плагин выпущен под лицензией Apache 2.0 и отлично документирован (есть даже пример проекта).       AndroidUtilCode — функциональная и простая в использовании библиотека для Android, которая инкапсулирует функции, обычно используемые при разработке Android с демонстрационными версиями и модульными тестами. Инкапсулированные API позволяют значительно повысить эффективность разработки.  Проект состоит в основном из двух модулей: utilcode (используется в разработке часто) и subutil (используется редко, но позволяет упростить основной модуль). Версия проекта — 1.29.0, лицензия — Apache 2.0.       «Hijckr вмешивается в инфляцию макета Android и перенаправляет названные элементы в другие классы».  Это довольно интересный инструмент. Например, если файл макета содержит TextView, Android обычно загружает android.widget.TextView, но вместо этого можно перехватить xml-теги и загрузить com.myapp.TextView.  Описание проекта довольно подробное и позволяет быстро начать работу с инструментом (который полностью написан на Java).       Roomigrant — это вспомогательная библиотека для автоматической генерации миграций библиотеки Android Room с использованием формирования кода во время компиляции. Она использует созданные библиотекой Room файлы схемы и генерирует миграции на основе разницы между ними — то есть, создание схемы Room должно быть включено в файле build.gradle, что хорошо описано в README. Проект выпущен под лицензией MIT, версия 0.1.7.       После переноса базы данных на Room неплохо бы просмотреть ее: RoomExplorer позволяет просматривать все данные таблиц в табличном формате, удалять таблицы, вставлять, изменять и удалять строки и т. д. Инструмент хорошо документирован, лицензия — Apache 2.0.       Инструмент android-framer добавляет рамки и заголовки к скриншотам в Google Play. Источник вдохновения — fastlane frameit. Инструмент написан на Python и использует ImageMagick. Настроить рамки (фоны) можно, например, с помощью Facebook Design. Также можно менять шрифт, кегль, размер рамки и т. д. Лицензия — Apache 2.0.       Dependency Tree Diff — это «интеллектуальный инструмент сравнения для вывода задачи dependencies Gradle, который всегда показывает путь к корневой зависимости». Можно установить инструмент через brew или просто использовать jar-файл.  Лицензия — Apache 2.0.       Gradle Doctor — это плагин для сканирования сборки Gradle. Функциональность: настраиваемые предупреждения о проблемах со скоростью сборки, измерение временны́х затрат на инструменты обработки аннотаций Dagger, установка переменной JAVA_HOME и проверка ее соответствия JAVA_HOME в IDE, простое отключение кеширования тестов, остановка сборки в случае, если найдены пустые каталоги src (поскольку это может быть причиной несовпадений в кеше), и многое другое. У инструмента отличная документация, проект выпущен под лицензией Apache 2.0.     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.       Dagger Browser — еще один инструмент (прогрессивное веб-приложение) для удобной навигации по схеме Dagger в проекте. «Данные схемы заполняются с помощью SPI-плагина Dagger, а средство просмотра написано с помощью CRA (create-react-app) и TypeScript»,  — Dagger Browser Есть и пример приложения, в котором показано, как инструмент работает. Всё это выпущено под трехпунктовой лицензией BSD.       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. И можно не ждать, пока они появятся — этот проект дает возможность использовать их сразу же».   MNML (произносится как «minimal» — «минимальный») — простое бесплатное приложение для записи экрана в Android. Конечно, приложений и инструментов, обеспечивающих такую функциональность, множество. Сегодня функция записи экрана встроена во все новые устройства, но если вам интересно посмотреть, как реализовать такое приложение, этот проект будет отличным примером. Лицензия — Apache 2.0.       Вот и всё. Надеюсь, список вам понравился и какие-то инструменты смогли вас вдохновить. До встречи!      Перевод статьи выполнен в Alconost. Alconost занимается локализацией игр, приложений и сайтов на 70 языков. Переводчики-носители языка, лингвистическое тестирование, облачная платформа с API, непрерывная локализация, менеджеры проектов 24/7, любые форматы строковых ресурсов. Мы также делаем рекламные и обучающие видеоролики — для сайтов, продающие, имиджевые, рекламные, обучающие, тизеры, эксплейнеры, трейлеры для Google Play и App Store.