Скорость сборки проекта

#разработка



Каждый раз, когда собираю основной рабочий проект, то берет грусть от времени сборки.



И вот, когда время сборки проекта стало приближаться к 5 минутам, то решил найти варианты решения этой проблемы.



На последнем Mobius был доклад, в котором автор рассказывал про уменьшение времени сборки проекта. Главным аргументом для этого было разбиение проекта на модули.



Думаю, что проблемы долгой сборки у большинства крупных проектов одинаковые:

• Annotation processing;

• переплетенность модулей между собой;

• Data binding и Dagger в каждом модуле;

• огромный модуль и Application модуль.



Первые шаги, которые помогут уменьшить время сборки проекта:

1) Использование implementation вместо api в gradle.

2) Ядро приложения должно быть максимально тонким. Сюда лучше всего добавлять только интерфейсы, а все реализации описываются в конкретной фиче.

3) Код приложения нельзя шарить между модулями.

4) Модули не должны взаимодействать друг с другом.



Также стоит помнить про инструмент gradlew clean assembleDebug --scan. Он покажет интерактивную диаграмму с этапами сборки проект.



Чтобы лучше разобраться с модульностью рекомендую ознакомиться с проектом.