[Android] Ускорение сборок flavors и buildTypes малой кровью и кастомным BuildConfig



Статья посвящена ускорению скорости сборки флейворов и разных типов сборки монолитного проекта с помощью многомодульности и кастомного файла конфигурации.



Возник запрос. Готов ответ

Имелась следующая проблема: довольно продолжительное выполнение сборки монолитного приложения на каждый флейвор и тип сборки.



Происходит это из-за BuildConfig, в котором задаются различные константы: адреса серверов, переключатели фич и т.п. Для каждого отдельного флейвора и типа сборки формируется свой BuildConfig, поэтому смена или использование констант в различных кусках кода из него вызывает почти полную пересборку проекта.



Для решения этой задачи было принято решение по созданию модуля fastapp, который будет заниматься только конфигурированием сборки и вследствие этого иметь высокую скорость сборки из-за маленького размера модуля. Константы конфигурации будут предоставляться другим модулям в runtime с помощью GlobalConfig на основе BuildConfig. “Константы” в GlobalConfig – это переменные var, использование которых не приводит к полной перекомпиляции монолитного модуля app, а приводит только к пересборке модуля fastapp. Также мы вынесем сервисы Google и Huawei из монолита в отдельные модули.



Читать дальше



@android_its