#Dagger #Performance #Gradle



Dagger 2 сделал много полезного

* Избавил нас от рефлексии в Runtime, добавив вместо этого annotation processing во время сборки. Одна из больших проблем, что не было возможности его инкремтной сборки до Gradle 4.7.

* Сделал сгенерированный код читабельным, чтобы он был проще для понимания человеку.



К сожалению, за все это пришлось заплатить временем сборки проекта, но есть способ это исправить:

* Первое что надо сделать - обновиться до последней версии Dagger (на сегодня 2.19) и Gradle (4.10.2).



* Используя икрементальный режим annotation processor в Dagger 2

* Отключить форматирование генерируемого кода (это занимает около 40% времени работы annotation processor Dagger).



build.gradle

tasks.withType(JavaCompile).configureEach {

options.compilerArgs += [

"-Adagger.formatGeneratedSource=disabled",

"-Adagger.gradle.incremental=enabled"

]

}



// Для проектов с Kotlin где используется kapt

kapt {

arguments {

arg("dagger.formatGeneratedSource", "disabled")

arg("dagger.gradle.incremental", "enabled")

}

}