Выбор ответа Middle Модульность обновлено

Почему сборка не ускорилась после модуляризации

Вопрос

Проект разбили на модули, но почти любое изменение пересобирает всё. Какая вероятная причина?

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

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

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

Коротко

Правильный ответ: Модули зависят от одного большого часто меняющегося core или от реализаций соседей, а не от API. Инкрементальность работает, только если граф зависимостей неглубокий, а меняющийся код находится на листьях.

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

  1. Модулей слишком много: Gradle тратит больше времени на конфигурацию, чем экономит на сборке
  2. Кеш сборки Gradle работает только для release-вариантов, а debug пересобирается целиком
  3. Модули названы без префикса feature, и система сборки не понимает, что их можно пропустить
  4. Модули зависят от одного большого часто меняющегося core или от реализаций соседей, а не от APIправильный ответ

Разбор

Инкрементальность работает, только если граф зависимостей неглубокий, а меняющийся код находится на листьях. Огромный core, который правят каждый день, пересобирает всех потребителей. Помогает api/impl-разделение, дробление core на стабильные маленькие модули и контроль графа (например, Gradle api против implementation). Число модулей само по себе не причина, а названия ни на что не влияют.

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

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