Скорость сборки проекта
#разработка
Каждый раз, когда собираю основной рабочий проект, то берет грусть от времени сборки.
И вот, когда время сборки проекта стало приближаться к 5 минутам, то решил найти варианты решения этой проблемы.
На последнем Mobius был доклад, в котором автор рассказывал про уменьшение времени сборки проекта. Главным аргументом для этого было разбиение проекта на модули.
Думаю, что проблемы долгой сборки у большинства крупных проектов одинаковые:
• Annotation processing;
• переплетенность модулей между собой;
• Data binding и Dagger в каждом модуле;
• огромный модуль и Application модуль.
Первые шаги, которые помогут уменьшить время сборки проекта:
1) Использование
2) Ядро приложения должно быть максимально тонким. Сюда лучше всего добавлять только интерфейсы, а все реализации описываются в конкретной фиче.
3) Код приложения нельзя шарить между модулями.
4) Модули не должны взаимодействать друг с другом.
Также стоит помнить про инструмент
Чтобы лучше разобраться с модульностью рекомендую ознакомиться с проектом.
#разработка
Каждый раз, когда собираю основной рабочий проект, то берет грусть от времени сборки.
И вот, когда время сборки проекта стало приближаться к 5 минутам, то решил найти варианты решения этой проблемы.
На последнем Mobius был доклад, в котором автор рассказывал про уменьшение времени сборки проекта. Главным аргументом для этого было разбиение проекта на модули.
Думаю, что проблемы долгой сборки у большинства крупных проектов одинаковые:
• Annotation processing;
• переплетенность модулей между собой;
• Data binding и Dagger в каждом модуле;
• огромный модуль и Application модуль.
Первые шаги, которые помогут уменьшить время сборки проекта:
1) Использование
implementation
вместо api
в gradle.2) Ядро приложения должно быть максимально тонким. Сюда лучше всего добавлять только интерфейсы, а все реализации описываются в конкретной фиче.
3) Код приложения нельзя шарить между модулями.
4) Модули не должны взаимодействать друг с другом.
Также стоит помнить про инструмент
gradlew clean assembleDebug --scan
. Он покажет интерактивную диаграмму с этапами сборки проект.Чтобы лучше разобраться с модульностью рекомендую ознакомиться с проектом.