
#gradle
Сборка приложения — это извечная тема для споров, докладов и постоянных улучшений. И, как бы смешно это ни было, от неё зависит то, какое количество фич мы можем сделать в определённый отрезок времени.
Некоторые полагаются на стандратные настройки проекта и начинают добавлять улучшения только тогда, когда сборка становится до невозможности долгой.
Но есть советы, которые можно попробовать применить сразу после старта проекта.
Для начала выполните следуюущую команду, чтобы понять текущую скорость сборки:
./gradlew --profile --offline --rerun-tasks assembleDebug
Начнём улучшать:
🔹применим
org.gradle.configureondemand=true
— флаг включает конфигурацию проектов по запросу, что позволяет собирать только то, что участвует в сборке.🔹увеличим Java heap при помощи
org.gradle.jvmargs=-Xmx1536m
, если позволяет ваша оперативная память.🔹задействуем
kapt.use.worker.api=true
. Флаг задействует worker API для стадии annotation processing в kapt, а также перемещает выполнение этой стадии отдельно от Kotlin Compile Daemon.🔹включим параллельную сборку мультимодульных проектов при помощи
org.gradle.parallel=true
.🔹если в проекте есть room, то добавим
room.incremental = true
. Начиная с версии 2.3.0, флаг включен по умолчанию.🔹добавим
org.gradle.unsafe.watch-fs=true
. Работает флаг так: чтобы gradle мог определить, надо выполнять задачу или нет, ему необходимо проверить, был ли изменён файл с момента последней сборки. Daemon хранит эту информацию в памяти, если задействован данный флаг. Иначе — он собирает её для каждой сборки. Больше деталей можно узнать тут.🔹можно включить конфигурационный кэш при помощи
org.gradle.unsafe.configuration-cache=true
.🔹если у вас есть png в проекте, то можно выключить автоматическое сжатие png-файлов для сборок, отличных от debug, где оно автоматически выключено при помощи
crunchPngs false
.🔹посмотрите, чтобы у вас везде в проекте были указаны точные названия версий, избегайте названий в виде 1.+.
Конечно, это далеко не полный список возможных улучшений, но даже эти флаги ускорят сборку вашего проекта. Чуть больше информации о них можно почитать в статье.