Ответ вслух Senior Сборка Gradle обновлено

Как ускорить сборку проекта

Вопрос

Сборка проекта занимает 8 минут. Что ты будешь делать?

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

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

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

Коротко

Сначала измеряю: Build Analyzer в Android Studio и Build Scan показывают, сколько уходит на конфигурацию, какие задачи самые долгие, сколько из кеша и где обработчики аннотаций.

Что должно прозвучать в ответе

  • Измерить: Build Analyzer, Build Scan, профилирование

  • Configuration cache и build cache, удалённый кеш для CI

  • Модульность и implementation вместо api

  • KSP вместо kapt, меньше обработчиков аннотаций

  • Убрать тяжёлую логику из фазы конфигурации, convention plugins

  • Достаточно памяти демону, параллельность

Что могут спросить следом

  • Чем configuration cache отличается от build cache?
  • Почему изменение в core-модуле пересобирает всё?

Разбор

Сначала измеряю: Build Analyzer в Android Studio и Build Scan показывают, сколько уходит на конфигурацию, какие задачи самые долгие, сколько из кеша и где обработчики аннотаций. Если долгая конфигурация, включаю configuration cache и убираю из скриптов логику, которая выполняется при каждом запуске, общие настройки переношу в convention plugins. Если долгое выполнение, включаю build cache, а для команды и CI удалённый кеш, чтобы не компилировать одно и то же на каждой машине. Перевожу обработчики с kapt на KSP. Смотрю на граф модулей: если одно изменение пересобирает всё, значит слишком много api и большой общий модуль, который все тянут; дроблю его и заменяю api на implementation. Проверяю параллельную сборку и память демона. Для CI отдельно настраиваю кеши Gradle между запусками.

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

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