Как Gradle собирает модули в многомодульном проекте

«Как Gradle собирает модули в многомодульном проекте» — вопрос из категории Gradle и сборка, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Gradle использует Directed Acyclic Graph (DAG) для определения порядка сборки модулей. Каждый модуль — это отдельный build.gradle файл с собственными зависимостями.

Ключевые моменты:

  1. Зависимости между модулями — если модуль A зависит от модуля B, Gradle сначала соберет B.
  2. Параллельная сборка — независимые модули могут собираться параллельно (если включено в gradle.properties).
  3. Конфигурация — корневой settings.gradle определяет включенные модули:
include ':app', ':feature', ':core'

Пример зависимости:

// build.gradle модуля :app  
dependencies {  
    implementation project(':core')  
}  

Gradle анализирует граф зависимостей, избегая циклических ссылок, и оптимизирует процесс сборки через кэширование и инкрементальные сборки.