Tiempos de compilación de Kotlin acelerados con Kotlin Symbol Processing 1.0


Publicado por Ting-Yuan Huang, ingeniero de software y Jiaxiang Chen, ingeniero de software


Los tiempos de compilación de Kotlin se aceleraron con la imagen Kotlin Symbol Processing 1.0

Procesamiento de símbolos de Kotlin (KSP), nuestra nueva herramienta de creación de complementos de compilación liviana en Kotlin, ¡ahora es estable! KSP ofrece una funcionalidad similar a la herramienta de procesamiento de anotaciones de Kotlin (KAPT), sin embargo, es hasta 2 veces más rápido, ofrece acceso directo a las construcciones del lenguaje Kotlin y ofrece soporte para objetivos multiplataforma.

En los últimos meses, KSP ha pasado por 32 versiones con más de 162 errores reportados por la comunidad y corregidos por nuestro equipo. Si ha estado esperando para adoptarlo, ahora es el momento de comprobarlo.

Por qué creamos KSP

En el equipo de Android, preguntamos regularmente a los desarrolladores: ¿Cuáles son sus mayores frustraciones al escribir aplicaciones hoy en día? Uno de los principales problemas que surge repetidamente es la velocidad de construcción. A lo largo de los años, hemos realizado mejoras constantes en la cadena de herramientas de compilación de Android y hoy nos complace agregar a estas mejoras con KSP. KSP es la próxima generación de procesamiento de anotaciones en Kotlin: mejorará en gran medida la velocidad de compilación para los desarrolladores de Kotlin y, a diferencia de KAPT, ofrece soporte para Kotlin / Native y Kotlin / JS.

“Agregar soporte de KSP a Room ha mejorado la velocidad de compilación y también le ha permitido a Room comprender mejor el código de Kotlin, como la cancelación de genéricos que no era posible con KAPT. También abre nuevas posibilidades como la generación de código. Kotlin, que permitirá que Room tenga un mejor experiencia de usuario que Kotlin en el futuro “. – Yigit Boyar, ingeniero de software, Android

¿Por qué KSP es más rápido?

La herramienta de procesamiento de anotaciones de Kotlin (KAPT) funciona con la infraestructura de procesamiento de anotaciones de Java para que la mayoría de los procesadores de anotaciones de lenguaje Java funcionen en Kotlin de forma inmediata. Para hacer esto, KAPT compila el código Kotlin en stubs Java que contienen la información de interés para los procesadores de anotaciones Java. Sin embargo, crear estos stubs es costoso y significa que el compilador tiene que resolver todos los símbolos del programa varias veces (una vez para generar stubs y luego de nuevo para realizar la compilación real).

KSP se aleja del modelo de generación de stub al funcionar como un complemento del compilador de Kotlin: permite a los procesadores de anotaciones leer y analizar programas y recursos fuente directamente en Kotlin en lugar de requerir que dependan de la infraestructura de procesamiento de anotaciones de Java. Esto mejora enormemente la velocidad de construcción (hasta 2 veces más rápido para Room’s
Aplicación de prueba de Kotlin) y significa que KSP se puede utilizar para entornos que no son de Android ni de JVM, como Kotlin / Native y Kotlin / JS.

Cómo empezar

Para comenzar a usar KSP, descargue el
Proyecto de patio de recreo de KSP
de GitHub, que muestra cómo usar KSP como procesador de anotaciones y como aplicación / biblioteca consumible:

  • Procesador de anotaciones: Un juguete
    test-processor biblioteca que implementa el generador de patrones como procesador KSP
  • Biblioteca del consumidor: A workload directorio que muestra cómo usar el generador de procesadores en un proyecto Kotlin del mundo real

Si es un desarrollador de aplicaciones, consulte
lista de bibliotecas compatibles
y el
Inicio rápido
guía para mover un módulo de KAPT a KSP.

Usar Moshi o Room con KSP

Si está utilizando Moshi o Room en su proyecto, ya puede probar KSP haciendo una solución rápida al archivo de compilación de su módulo. Por ejemplo, para usar la versión KSP de Room en un módulo Gradle, simplemente puede reemplazar el complemento KAPT con KSP y reemplazar la dependencia KSP:

apply plugin: 'com.google.devtools.ksp'

dependencies {
  ...
  implementation "androidx.room:room-runtime:$room_version"
  kapt "androidx.room:room-compiler:$room_version"
  ksp "androidx.room:room-compiler:$room_version"

}

Eche un vistazo al
Notas de la versión de la sala
para más información.

Conclusión

Con la versión 1.0 de KSP, comenzará a ver tiempos de compilación mejorados para sus proyectos de Kotlin a medida que migre desde las bibliotecas basadas en KAPT. También hemos actualizado una serie de bibliotecas específicas de Android que están listas para probar hoy y ofrecen importantes mejoras de rendimiento.

Compruebe también

en vivo desde Droidcon, incluida la mayor actualización de Gemini en Android Studio y más lanzamientos del SDK de Android.

Acabamos de lanzar nuestro episodio de otoño de #TheAndroidShow en YouTube etcétera desarrollador.android.comy esta vez …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *