Annotasjonsbehandling med Kapt og Gradle

KOTLIN!! … Er Hva Alle Google kollektivt ropte På Android-utviklere på årets i / O-konferanse. Og det er flott — Kotlin er et fullverdig språk med god IDE-støtte som gjør skriving Av Android-apper mye enklere og raskere. Kotlin er imidlertid fortsatt veldig ny, med versjon 1.0 utgitt i februar i fjor. Og som med alt det nye, fungerer ikke alt helt.

En ting som har vært smertefullt en stund, men begynner å bli lettere, bruker Kotlin med annotasjonsprosessorer. Men selv med mange funksjonelle problemer utarbeidet, er det ikke massevis av dokumentasjon om hvordan alle brikkene går sammen, så la oss gå gjennom det.

Vi kommer til å anta at Du allerede er kjent med Temaet Java-annotasjonsprosessorer. Med det i tankene er det egentlig bare noen få forskjeller.

Kapt Er Kotlin Annotasjonsbehandlingsverktøyet, og det er i ganske god form i disse dager. Hvis du vil kunne referere til generert kode fra Kotlin, må du bruke kapt. For å gjøre det, bare inkludere plugin i bygge.gradle fil med linjen:

apply plugin: 'kotlin-kapt'

og hvor du normalt vil bruke annotationProcessor søkeord for å angi prosessor avhengighet, i stedet bruke kapt søkeord.

Det er det. Du er ferdig.

Ikke Helt

Ok, du er nesten ferdig. Det neste og mest interessante spørsmålet er, hvordan feilsøker du en annotasjonsprosessor som er kompilert med kapt?

hvis du kommer fra java, kan du være kjent med å feilsøke en annotasjonsprosessor ved å kjøre javac fra kommandolinjen og deretter feste debuggeren til den. Men kapt bruker ikke javac til å kompilere, det bruker kotlinc. Så instruksjonene for feilsøking av en annotasjonsprosessor på vanlig måte må være svært litt modifisert for kapt, på to måter:

  1. kommandoen vi ønsker å kjøre er nå:
./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"

Merk: kommandoen ovenfor har blitt redigert fra den opprinnelige historien på grunn av en kommentar til denne stackoverflowen. Den nye kommandoen lar deg legge ved feilsøkeren når som helst, i stedet for å vente på kapt-trinnet for å begynne og tvinge deg til å prøve å «fange» det. Sammendrag-bruk denne nye kommandoen, det er mye bedre.

2.Vi må vente På Kotlin-kompileringsoppgaven for å begynne før vi legger til debuggeren. Så du ønsker å overvåke bygge og se etter oppgaven:

:app:kaptDebugKotlin

og når du ser det, hodet umiddelbart over TIL IDE og traff debug På Ekstern konfigurasjon. I min erfaring, hvis du ikke legger til tid, vil oppgaven bare fortsette. Du har noen sekunder å finne ut av det, men det er litt av et løp for å få alt til å fungere.
REDIGER: ovennevnte ^ er ikke lenger tilfelle! Med den nye gradle-kommandoen kan du når som helst legge ved debuggeren, og den bør treffe brytepunkter i prosessorklassen. Hurra! Den eneste advarselen er at noen ganger vil debuggeren henge på andre punkter i bygningen, bare start på nytt eller reattach debugging, og du vil være god å gå.

Så det er egentlig det. Nå kan du bygge, kjøre og feilsøke annotasjonsprosessoren din med kapt. Happy Kotlin-ing.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.