¿Listo para aprender un poco más sobre optimización de Gradle? El pasado 26 de enero tuvimos el placer de tener un evento donde hablamos justamente de eso. El evento contó con la participación de nuestro especialista José Carlos López Gómez quien compartió algunos de sus conocimientos en el área.
¿Quieres conocer todos los detalles? entonces disfruta de este con la grabación de vídeo completa:
¿No tienes tiempo para ver el video? ¡sin problema! aquí están los puntos más importantes.
Los objetivos tratados en el evento fueron:
El primer punto para conseguir estos objetivos pasa por la actualización, tanto de las herramientas utilizadas en la compilación como de las dependencias del propio proyecto, es decir:
Después de cada actualización individual es recomendable realizar un ciclo de pruebas automatizadas y manuales.
Podemos mejorar los tiempos de compilación evitando realizar trabajo innecesario. Por ejemplo, podemos utilizar la caché de configuración de Gradle con la siguiente línea en el archivo gradle.properties:
// in gradle.properties
org.gradle.unsafe.configuration-cache=true
Es importante evitar repositorios duplicados en settings.gradle.kts. Además, el orden en que los colocamos es importante. Los repositorios más utilizados deberán situarse en la parte superior para evitar el mayor número de consultas innecesarias a los repositorios.
Deshabilitando jetifier también conseguiremos acelerar nuestras builds.
// gradle.properties
android.enableJetifier = false
Es recomendable el uso de composite build para evitar recompilar la totalidad del proyecto con cada pequeño cambio.
Versions catalog es un único fichero dónde se centralizan:
A continuación se muestra un ejemplo de versions catalog:
Por tanto, si utilizamos versions catalog, sabremos rápidamente dónde dirigirnos para realizar cualquier actualización en el proyecto.
Si modularizamos nuestro código podremos utilizar:
Finalmente, si utilizamos convention plugins podremos conseguir el objetivo de tener unos build.gradle.kts muy limpios, con tan solo dos grandes bloques:
plugins{
...
}
dependencies{
...
}
La mejora depende mucho del estado inicial del proyecto, pero puede ser factible pasar de tiempos que rondan los 15 minutos a 2 o 3 minutos fácilmente. Estas mejoras afectan sobre todo a las recompilaciones.