Goolge lanzó, la versión Alpha del procesamiento de símbolos de Kotlin (Kotlin Symbol Processing o KSP), una herramienta completamente nueva para crear complementos de compilación ligeros en Kotlin.
KSP ofrece una funcionalidad similar a KAPT, sin embargo, es hasta 2 veces más rápido y ofrece acceso directo a las funciones del compilador Kotlin y además, se está desarrollando teniendo en cuenta la compatibilidad multiplataforma.
KSP es compatible con la versión de Kotlin 1.4.30 y posteriores; puedes consultar el código fuente y la documentación en el repositorio de KSP de GitHub.
¿Por qué KSP?
Muchos desarrolladores iteran e implementan aplicaciones docenas de veces al día, por lo que tener que sentarse a esperar una compilación lenta puede llevar mucho tiempo. Uno de los mayores desafíos al compilar el código de Kotlin es que Kotlin no tiene un sistema de procesamiento de anotaciones nativo.
Los procesadores de anotaciones Room, están omnipresentes en Android y dependen de la compatibilidad del procesamiento de anotaciones de Java, a través de la herramienta de procesamiento de anotaciones de Kotlin (KAPT).
Sin embargo, KAPT puede ser lento de ejecutar, ya que requiere generar stubs intermedios de Java que luego pueden ser ingeridos por el sistema de procesamiento de anotaciones de Java.
Al crear KSP, pensamos en como sería el procesamiento de anotaciones para Kotlin si lo construyéramos desde cero. KSP ofrece una API potente y simple para analizar el código Kotlin directamente.
De hecho, los puntos de referencia iniciales con la biblioteca Room muestran que KSP es aproximadamente 2 veces más rápido que KAPT.
Empezando
Para ver como funciona KSP en acción, puedes descargar el proyecto del patio de juegos de KSP de Github.
En él encontrarás:
- Biblioteca: Una
test-processor
biblioteca de juguetes que implementa el patrón del constructor como un procesador KSP - Proyecto de consumo: Un
workload
directorio que muestra mo utilizar el procesador de construcción en un proyecto de Kotlin del mundo real
Toda la lógica para implementar el constructor está en test-processor
– para el consumidor ( workload
), la única diferencia entre usar KAPT y KSP es un cambio en el archivo de construcción de dos líneas.
Agregar:
plugins {
```
id("com.google.devtools.ksp")
}
ksp(project(":test-processor"))
Suprimiendo la línea:
kapt(project(":test-processor"))
Este es el objetivo de KSP: La mayoría de los desarrolladores de aplicaciones de Android no necesitan preocuparse por sus componentes internos. Aparte de este cambio de una línea, una biblioteca que admite KSP, se ve como un procesador de anotaciones normal, solo que es hasta 2 veces más rápido.
Dicho esto, usar KAPT y KSP en el mismo módulo probablemente ralentizará su compilación inicialmente, por lo que durante este período alpha, es mejor usar KSP y KAPT en módulos separados.
A medida que más procesadores de anotaciones adopten KSP, esperamos que la mayoría de sus módulos puedan usar KSP como un reemplazo casi inmediato de KAPT. Por ahora, puedes consultar qué procesadores de anotaciones ofrecen compatibilidad con KSP en la siguiente tabla.
Si faltase en la tabla, alguna biblioteca que admita o esté implementando soporte para KSP, no dudes en enviar una solicitud de extracción.
Si eres autor de una biblioteca, que actualmente usa el procesamiento de anotaciones, puedes encontrar más información sobre cómo hacer que tu biblioteca sea compatible con KSP dentro de las guías de inicio rápido y README.
Para los autores de bibliotecas, ahora que KSP está en modo Alpha, es un buen momento para comenzar a analizarlo de cerca y darnos su opinión sobre la API en el rastreador de problemas de KSP.
Además, se publican actualizaciones de versiones en el canal #ksp de Kotlin Slack.
Java es una marca comercial registrada de Oracle y / o sus afiliados.
Fuente: Blog de Desarrolladores de Android bajo Licencia Creative Commons 2.5.