Annotation bearbetning med Kapt och Gradle

KOTLIN!! … är vad alla Google kollektivt ropade på Android-utvecklare vid årets I / O-konferens. Och det är bra — Kotlin är en fullfjädrad språk med stor IDE stöd som gör att skriva Android-appar en fan av mycket enklare och snabbare. Kotlin är dock fortfarande väldigt ny, med version 1.0 släppt i bara februari förra året. Och som med allt det nya, fungerar inte allt riktigt.

en sak som har varit smärtsam ett tag, men börjar bli lättare, använder Kotlin med annoteringsprocessorer. Men även med många funktionella problem som utarbetats finns det inte massor av dokumentation om hur alla bitar går ihop, så låt oss gå igenom det.

vi antar att du redan är bekant med ämnet Java-annoteringsprocessorer. Med det i åtanke finns det egentligen bara några skillnader.

Kapt är Kotlin Annotation Processing Tool, och det är i ganska bra form idag. Om du vill kunna referera genererad kod från Kotlin måste du använda kapt. För att göra det, helt enkelt inkludera plugin i din build.gradle-fil med linjen:

apply plugin: 'kotlin-kapt'

och där du normalt skulle använda annotationProcessor-nyckelordet för att ange ditt processorberoende, använd istället kapt-nyckelordet.

det är det. Du är klar.

inte riktigt

Ok, du är nästan klar. Nästa och mest intressanta fråga är, hur felsöker du en annoteringsprocessor som sammanställs med kapt?

om du kommer från java kanske du känner till att felsöka en annoteringsprocessor genom att köra javac från kommandoraden och sedan bifoga felsökaren till den. Men kapt använder inte javac för att kompilera, det använder kotlinc. Så instruktionerna för felsökning av en annotationsprocessor på det normala sättet måste vara mycket lite modifierade för kapt, på två sätt:

  1. kommandot vi vill köra är nu:
./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"

ovanstående kommando har redigerats från den ursprungliga berättelsen på grund av en kommentar till detta stackoverflow. Det nya kommandot låter dig bifoga felsökaren när som helst, snarare än att vänta på kapt-steget för att börja och tvinga dig att försöka ”fånga” det. Sammanfattning-använd det här nya kommandot, det är mycket bättre.

2.Vi måste vänta på att Kotlin-kompileringsuppgiften börjar innan vi bifogar felsökaren. Så du vill övervaka din byggnad och leta efter uppgiften:

:app:kaptDebugKotlin

och när du ser det, gå direkt till din IDE och slå debug på din fjärrkonfiguration. Enligt min erfarenhet, om du inte bifogar i tid, kommer uppgiften bara att gå vidare. Du har några sekunder att räkna ut det, men det är lite av en tävling för att få allt att fungera.
redigera: ovanstående ^ är inte längre fallet! Med det nya gradle-kommandot kan du bifoga felsökaren när som helst och den ska träffa brytpunkter i din processorklass. Yay! Den enda försiktigheten är att ibland kommer felsökaren att hänga på andra punkter i byggnaden, bara starta om eller sätt tillbaka felsökning, och du kommer att vara bra att gå.

så det är verkligen det. Nu kan du bygga, köra och felsöka din annotationsprocessor med kapt. Glad Kotlin-ing.

Lämna ett svar

Din e-postadress kommer inte publiceras.