Выбор ответа Middle Модульность обновлено
Почему сборка не ускорилась после модуляризации
Вопрос
Проект разбили на модули, но почти любое изменение пересобирает всё. Какая вероятная причина?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Модули зависят от одного большого часто меняющегося core или от реализаций соседей, а не от API. Инкрементальность работает, только если граф зависимостей неглубокий, а меняющийся код находится на листьях.
Варианты ответа
- Модулей слишком много: Gradle тратит больше времени на конфигурацию, чем экономит на сборке
- Кеш сборки Gradle работает только для release-вариантов, а debug пересобирается целиком
- Модули названы без префикса
feature, и система сборки не понимает, что их можно пропустить - Модули зависят от одного большого часто меняющегося core или от реализаций соседей, а не от APIправильный ответ
Разбор
Инкрементальность работает, только если граф зависимостей неглубокий, а меняющийся код находится на листьях. Огромный core, который правят каждый день, пересобирает всех потребителей. Помогает api/impl-разделение, дробление core на стабильные маленькие модули и контроль графа (например, Gradle api против implementation). Число модулей само по себе не причина, а названия ни на что не влияют.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «Модульность»
- Циклические зависимости модулей
- Зависимость фичи от фичи
- Инструменты модуляризации на Android
- Инструменты модуляризации на iOS
- Типы модулей мобильного приложения
- api и implementation в Gradle
- Статические и динамические модули на iOS
- Как вынести фичу из монолита в модуль