Выбор ответа Senior Сборка Gradle обновлено
Convention plugins
Вопрос
Как правильно убрать дублирование настроек android {} в 30 модулях?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Convention plugins в build-logic, которые модули применяют как плагин. Convention plugins это свои Gradle-плагины в отдельной включаемой сборке (includeBuild("build-logic")), например myapp.android.library и myapp.android.feature.
Варианты ответа
- Скопировать блок в каждый модуль и держать их одинаковыми скриптом
subprojects {}в корневом скрипте с общей конфигурациейandroid {}для всех модулей- Convention plugins в
build-logic, которые модули применяют как плагинправильный ответ - Объединить всё в один модуль, тогда блок
android {}будет один
Разбор
Convention plugins это свои Gradle-плагины в отдельной включаемой сборке (includeBuild("build-logic")), например myapp.android.library и myapp.android.feature. Модуль подключает плагин, и все общие настройки применяются явно и типобезопасно. subprojects/allprojects скрыто связывают модули, мешают configuration cache и изоляции проектов. Копипаста приводит к расхождениям.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.