Выбор ответа Senior Сборка Gradle обновлено

Convention plugins

Вопрос

Как правильно убрать дублирование настроек android {} в 30 модулях?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Convention plugins в build-logic, которые модули применяют как плагин. Convention plugins это свои Gradle-плагины в отдельной включаемой сборке (includeBuild("build-logic")), например myapp.android.library и myapp.android.feature.

Варианты ответа

  1. Скопировать блок в каждый модуль и держать их одинаковыми скриптом
  2. subprojects {} в корневом скрипте с общей конфигурацией android {} для всех модулей
  3. Convention plugins в build-logic, которые модули применяют как плагинправильный ответ
  4. Объединить всё в один модуль, тогда блок android {} будет один

Разбор

Convention plugins это свои Gradle-плагины в отдельной включаемой сборке (includeBuild("build-logic")), например myapp.android.library и myapp.android.feature. Модуль подключает плагин, и все общие настройки применяются явно и типобезопасно. subprojects/allprojects скрыто связывают модули, мешают configuration cache и изоляции проектов. Копипаста приводит к расхождениям.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.