Annotation Processing with Kapt and Gradle

KOTLIN!! … on mitä kaikki Google oli kollektiivisesti huutaa Android Kehittäjät tämän vuoden I / O konferenssi. Ja se on hienoa-Kotlin on täysin varustellun kielen kanssa suuri IDE tuki, joka tekee kirjallisesti Android-Sovellukset pahus paljon helpompaa ja nopeampaa. Kotlin on kuitenkin vielä hyvin Uusi, sillä versio 1.0 julkaistiin viime vuoden helmikuussa. Ja kuten kaikessa niin uudessa, kaikki ei aivan toimi.

yksi asia, joka on piinannut jo jonkin aikaa, mutta alkaa helpottaa, on Kotlinin käyttäminen annotaatioprosessoreilla. Mutta vaikka monet toiminnalliset ongelmat on ratkaistu, ei ole ton dokumentaatiota siitä, miten kaikki palaset menevät yhteen, joten käydään se läpi.

oletamme, että olet jo perehtynyt Java annotation-prosessoreihin. Tässä mielessä eroja on oikeastaan vain vähän.

Kapt on Kotlin-merkintöjen Käsittelytyökalu, ja se on nykyään aika hyvässä kunnossa. Jos haluat pystyä viittaus luotu koodi Kotlin, sinun täytyy käyttää kapt. Voit tehdä sen yksinkertaisesti sisällyttää plugin rakentaa.Gradle-tiedosto viivalla:

apply plugin: 'kotlin-kapt'

ja jos normaalisti käyttäisit annotationProcessor-avainsanaa määrittääksesi prosessoririippuvuutesi, käytä sen sijaan kapt-avainsanaa.

siinä se. Olet mennyttä.

ei ihan

Ok, olet melkein valmis. Seuraava, ja mielenkiintoisin kysymys on, miten debug huomautusten prosessori, joka on käännetty kapt?

jos olet tulossa javalta, saatat tuntea selityksien virheenkorjauksen suorittimen ajamalla javac komentoriviltä ja liittämällä vianetsintätyökalun siihen. Mutta kapt ei käytä javacia kääntämiseen, vaan kotlincia. Joten ohjeiden virheenkorjaus huomautuksen prosessori normaali tapa on hyvin hieman muutettu kapt, kahdella tavalla:

  1. komento, jonka haluamme suorittaa, on nyt:
./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"

Huomautus: yllä olevaa komentoa on muokattu alkuperäisestä tarinasta tämän stackoverflow ’ n kommentin vuoksi. Uuden komennon avulla voit liittää debuggerin milloin tahansa sen sijaan, että odottaisit kapt-vaiheen alkamista ja pakottaisit sinut yrittämään ja ”nappaamaan” sen. Yhteenveto-käytä tätä uutta komentoa, se on paljon parempi.

2.Meidän täytyy odottaa Kotlin-käännöstehtävän alkamista ennen kuin kiinnitämme debuggerin. Joten haluat seurata rakentaa ja etsiä tehtävän:

:app:kaptDebugKotlin

ja kun näet sen, pää välittömästi yli IDE ja paina debug Etäasetuksissa. Kokemukseni mukaan, jos et kiinnitä ajoissa, tehtävä vain siirtyy. Sinulla on muutama sekunti aikaa selvittää se, mutta se on vähän kisa, että kaikki saadaan toimimaan.
EDIT: yllä oleva ^ ei enää pidä paikkaansa! Uuden Gradle-komennon avulla voit liittää debuggerin milloin tahansa, ja sen pitäisi osua keskeytyspisteisiin prosessoriluokassasi. JEE! Ainoa varoitus on, että joskus debuggeri roikkuu muissa kohdissa rakentaa, vain käynnistä tai kiinnitä uudelleen virheenkorjaus, ja sinun on hyvä mennä.

joten se siitä. Nyt voit rakentaa, suorittaa ja debugata huomautusprosessorisi kapt: llä. Hyvää Kotlin-ingiä.

Vastaa

Sähköpostiosoitettasi ei julkaista.