Как ускорить сборку проекта
Вопрос
Сборка проекта занимает 8 минут. Что ты будешь делать?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Измерить: 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 ошибок.