KOTLIN!! …es lo que todo Google gritaba colectivamente a los desarrolladores de Android en la conferencia de E/S de este año. Y eso es genial: Kotlin es un lenguaje con todas las funciones con gran compatibilidad con IDE que hace que escribir aplicaciones de Android sea mucho más fácil y rápido. Kotlin es, sin embargo, todavía muy nuevo, con la versión 1.0 lanzada en febrero del año pasado. Y como con cualquier cosa tan nueva, no todo funciona del todo.
Una cosa que ha sido dolorosa durante un tiempo, pero que está empezando a ser más fácil, es usar Kotlin con procesadores de anotación. Pero incluso con muchos de los problemas funcionales resueltos, no hay un montón de documentación sobre cómo van juntas todas las piezas, así que repasémoslo.
Vamos a suponer que ya está familiarizado con el tema de los procesadores de anotación Java. Con eso en mente, en realidad solo hay unas pocas diferencias.
Kapt es la herramienta de Procesamiento de Anotaciones Kotlin, y está en bastante buena forma en estos días. Si desea poder hacer referencia al código generado desde Kotlin, debe usar kapt. Para hacer eso, simplemente incluya el complemento en su compilación.archivo gradle con la línea:
apply plugin: 'kotlin-kapt'
Y donde normalmente usaría la palabra clave annotationProcessor para especificar su dependencia del procesador, en su lugar use la palabra clave kapt.
Eso es todo. Estás acabado.
No del todo
Ok, ya casi has terminado. La siguiente y más interesante pregunta es, ¿cómo depurar un procesador de anotaciones compilado con kapt?
Si viene de Java, puede estar familiarizado con la depuración de un procesador de anotaciones ejecutando javac desde la línea de comandos y luego adjuntando el depurador a él. Pero kapt no está usando javac para compilar, está usando kotlinc. Por lo tanto, las instrucciones para depurar un procesador de anotaciones de la manera normal deben modificarse muy ligeramente para kapt, de dos maneras:
- El comando que queremos ejecutar es ahora:
./gradlew :app:clean :app:compileDebugKotlin --no-daemon -Dorg.gradle.debug=true -Dkotlin.compiler.execution.strategy="in-process" -Dkotlin.daemon.jvm.options="-Xdebug,-Xrunjdwp:transport=dt_socket\,address=5005\,server=y\,suspend=n"
Nota: El comando anterior se ha editado de la historia original debido a un comentario sobre este flujo de apilamiento. El nuevo comando le permite adjuntar el depurador en cualquier momento, en lugar de esperar a que comience el paso kapt y obligarle a intentar «atraparlo». Resumen-utilice este nuevo comando, es mucho mejor.
2.Tenemos que esperar a que comience la tarea de compilación de Kotlin antes de adjuntar el depurador. Por lo tanto, desea monitorear su compilación y buscar la tarea:
:app:kaptDebugKotlin
Y cuando lo vea, diríjase inmediatamente a su IDE y presione depurar en su configuración remota. En mi experiencia, si no te atas a tiempo, la tarea seguirá adelante. Tienes unos segundos para averiguarlo, pero es una carrera para que todo funcione.
EDITAR: ¡Lo anterior ^ ya no es el caso! Con el nuevo comando gradle, puedes adjuntar el depurador en cualquier momento, y debería alcanzar puntos de interrupción en tu clase de procesador. Yay! La única advertencia es que a veces el depurador se colgará en otros puntos de la compilación, simplemente reinicie o vuelva a conectar la depuración, y estará listo para comenzar.
Así que eso es todo. Ahora puede compilar, ejecutar y depurar su procesador de anotaciones con kapt. Feliz Kotlin-ing.