Optimización de Gradle en Android

¿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.

Objetivos

Los objetivos tratados en el evento fueron:

  • Reducir tiempos de compilación
  • Mejorar la mantenibilidad del código
  • Proyecto fácilmente escalable

Actualización de herramientas y dependencias

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:

  • Android Studio
  • Gradle
  • Android Gradle Plugin
  • Librerías propias del proyecto

Después de cada actualización individual es recomendable realizar un ciclo de pruebas automatizadas y manuales.

Digital Lover

Evitar trabajo innecesario:

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.

Mejorar la mantenibilidad del código

Versions catalog es un único fichero dónde se centralizan:

  • Números de versiones
  • Plugins
  • Libraries
  • Bundles

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:

  • Incremental build
  • Build cache
  • Parallel build

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{
 ...
}

 

¿Qué mejora podemos esperar en cuanto a los tiempos de compilación?

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.

Bibliografía:

 

 

Tags

He leído y acepto la política de privacidad
Acepto recibir emails sobre actividades de recruiting NTT DATA