Elaborazione di annotazioni con Kapt e Gradle

KOTLIN!! …è ciò che tutti Google stava gridando collettivamente agli sviluppatori Android alla conferenza I/O di quest’anno. E questo è fantastico — Kotlin è un linguaggio completo con un ottimo supporto IDE che rende la scrittura di app Android molto più facile e veloce. Kotlin è, tuttavia, ancora molto nuovo, con la versione 1.0 rilasciata nel febbraio dello scorso anno. E come con tutto ciò che di nuovo, non tutto funziona abbastanza.

Una cosa che è stata dolorosa per un po’, ma sta iniziando a diventare più facile, sta usando Kotlin con processori di annotazione. Ma anche con un sacco di problemi funzionali risolti, non c’è un sacco di documentazione su come tutti i pezzi vanno insieme, quindi camminiamo attraverso di essa.

Assumeremo che tu abbia già dimestichezza con i processori di annotazione Java. Con questo in mente, ci sono davvero solo alcune differenze.

Kapt è lo strumento di elaborazione delle annotazioni Kotlin, ed è in buona forma in questi giorni. Se vuoi essere in grado di fare riferimento al codice generato da Kotlin, devi usare kapt. Per fare ciò, includi semplicemente il plugin nella tua build.file gradle con la linea:

apply plugin: 'kotlin-kapt'

E dove normalmente si utilizza la parola chiave annotationProcessor per specificare la dipendenza del processore, utilizzare invece la parola chiave kapt.

Questo è tutto. Hai finito.

Non proprio

Ok, hai quasi finito. La prossima e più interessante domanda è: come si esegue il debug di un processore di annotazione compilato con kapt?

Se si proviene da java, si potrebbe avere familiarità con il debug di un processore di annotazione eseguendo javac dalla riga di comando e quindi collegando il debugger ad esso. Ma kapt non sta usando javac per compilare, sta usando kotlinc. Quindi le istruzioni per il debug di un processore di annotazione nel modo normale devono essere leggermente modificate per kapt, in due modi:

  1. Il comando che vogliamo eseguire è ora:
./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: il comando precedente è stato modificato dalla storia originale a causa di un commento su questo stackoverflow. Il nuovo comando ti consente di collegare il debugger in qualsiasi momento, piuttosto che aspettare l’inizio del passo kapt e costringerti a provare a “catturarlo”. Riepilogo: usa questo nuovo comando, è molto meglio.

2.Dobbiamo aspettare che inizi l’attività di compilazione Kotlin prima di collegare il debugger. Quindi vuoi monitorare la tua build e cercare l’attività:

:app:kaptDebugKotlin

E quando lo vedi, vai immediatamente al tuo IDE e premi debug sulla tua configurazione remota. Nella mia esperienza, se non si collega in tempo, il compito sarà solo andare avanti. Hai pochi secondi per capirlo, ma è un po ‘ una gara per far funzionare tutto.
MODIFICA: Quanto sopra ^ non è più il caso! Con il nuovo comando gradle, è possibile collegare il debugger in qualsiasi momento e dovrebbe colpire i punti di interruzione nella classe del processore. Evviva! L’unica avvertenza è che a volte il debugger si blocca in altri punti della build, basta riavviare o ricollegare il debug e sarai a posto.

Quindi è davvero così. Ora puoi creare, eseguire ed eseguire il debug del tuo processore di annotazione con kapt. Felice Kotlin-ing.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.