zpracování anotací s Kapt a Gradle

KOTLIN!! … je to, co všichni Google kolektivně křičeli na vývojáře Androidu na letošní konferenci I / O. A to je skvělé — Kotlin je plně vybavený jazyk s velkou podporou IDE, díky níž je psaní aplikací pro Android mnohem jednodušší a rychlejší. Kotlin je však stále velmi nový, s verzí 1.0 vydanou v únoru loňského roku. A stejně jako u všeho nového, ne všechno funguje.

jedna věc, která byla na chvíli bolestivá, ale začíná být jednodušší, je použití Kotlin s anotačními procesory. Ale i se spoustou funkčních problémů, není tu spousta dokumentace o tom, jak všechny kousky jdou dohromady, tak si to projdeme.

budeme předpokládat, že jste již obeznámeni s tématem procesorů anotace Java. S ohledem na to, existuje opravdu jen několik rozdílů.

Kapt je Kotlin anotace zpracování nástroj, a to je v docela dobré kondici v těchto dnech. Pokud chcete mít možnost odkazovat na vygenerovaný kód z Kotlinu, musíte použít kapt. Chcete-li to provést, jednoduše zahrnout plugin do sestavení.gradle soubor s řádkem:

apply plugin: 'kotlin-kapt'

a tam, kde byste normálně používali Klíčové slovo annotationProcessor k určení závislosti procesoru, místo toho použijte klíčové slovo kapt.

a je to. Skončil jsi.

ne tak docela

Ok, jste téměř hotovi. Další a nejzajímavější otázkou je, jak ladíte anotační procesor, který je kompilován s kapt?

pokud přicházíte z Javy, můžete být obeznámeni s laděním anotačního procesoru spuštěním javacu z příkazového řádku a připojením debuggeru k němu. Ale kapt nepoužívá javac ke kompilaci, používá kotlinc. Takže pokyny pro ladění anotačního procesoru normálním způsobem musí být pro kapt velmi mírně upraveny dvěma způsoby:

  1. příkaz, který chceme spustit, je nyní:
./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"

Poznámka: Výše uvedený příkaz byl upraven z původního příběhu kvůli komentáři k tomuto stackoverflow. Nový příkaz umožňuje připojit debugger kdykoli, spíše než čekat na začátek kroku kapt a nutit vás, abyste se pokusili „chytit“. Shrnutí-použijte tento nový příkaz, je to mnohem lepší.

2.Než připojíme debugger, musíme počkat, až začne kompilační úkol Kotlin. Takže chcete sledovat své sestavení a hledat úkol:

:app:kaptDebugKotlin

a když to uvidíte, okamžitě přejděte na IDE a stiskněte debug na vzdálené konfiguraci. Podle mých zkušeností, pokud se nepřipojíte včas, úkol bude jen pokračovat. Máte pár vteřin na to, abyste na to přišli, ale je to trochu závod, aby to všechno fungovalo.
upravit: výše uvedené ^ již neplatí! S novým příkazem gradle můžete kdykoli připojit debugger a měl by zasáhnout zarážky ve vaší třídě procesorů. Jupí! Jedinou námitkou je, že někdy debugger bude viset v jiných bodech sestavení, stačí restartovat nebo znovu připojit ladění a budete mít dobré jít.

takže to je opravdu vše. Nyní můžete vytvářet, spouštět a ladit procesor anotace pomocí kapt. Šťastný Kotlin-Ing.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.