annotáció feldolgozás Kapt és Gradle

KOTLIN!! … ez az, amit a Google együttesen kiabált az Android fejlesztőknek az idei I/O konferencián. És ez nagyszerű — a Kotlin egy teljes funkcionalitású nyelv, nagyszerű IDE támogatással, amely sokkal könnyebbé és gyorsabbá teszi az Android-alkalmazások írását. Kotlin azonban még mindig nagyon új, az 1.0 verzió csak tavaly februárban jelent meg. És mint minden, ami új, nem minden működik.

az egyik dolog, ami egy ideje fájdalmas, de kezd könnyebbé válni, a Kotlin használata annotációs processzorokkal. De még akkor is, ha sok funkcionális kérdés megoldódott, nincs rengeteg dokumentáció arról, hogy az összes darab hogyan megy össze, tehát menjünk át rajta.

feltételezzük, hogy már ismeri a Java annotációs processzorok témáját. Ezt szem előtt tartva, valójában csak néhány különbség van.

a Kapt a Kotlin annotációs feldolgozó eszköz, és manapság nagyon jó állapotban van. Ha azt szeretné, hogy hivatkozhasson a Kotlin által generált kódra, akkor a kapt-t kell használnia. Ehhez egyszerűen vegye fel a plugint a buildbe.gradle fájl a sorral:

apply plugin: 'kotlin-kapt'

ahol pedig általában az annotationProcessor kulcsszót használná a processzorfüggőség megadásához, ehelyett a kapt kulcsszót használja.

ez az. Végeztél.

nem egészen

Ok, majdnem kész. A következő és legérdekesebb kérdés az, hogy hogyan lehet hibakeresni egy kommentárprocesszort, amelyet a kapt-vel fordítottak le?

ha java-ból érkezik, akkor ismeri az annotációs processzor hibakeresését azáltal, hogy a javac parancsot futtatja a parancssorból, majd csatolja hozzá a hibakeresőt. De a kapt nem javac-ot használ a fordításhoz, hanem kotlinc-et. Tehát az annotációs processzor normál módon történő hibakeresésére vonatkozó utasításokat Nagyon kissé módosítani kell a kapt esetében, kétféleképpen:

  1. a futtatni kívánt parancs most:
./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"

Megjegyzés: A fenti parancsot az eredeti történetből szerkesztették a stackoverflow megjegyzésének köszönhetően. Az új parancs lehetővé teszi, hogy bármikor csatolja a hibakeresőt, ahelyett, hogy megvárná a kapt lépés megkezdését, és arra kényszerítené, hogy megpróbálja “elkapni”. Összegzés-használja ezt az új parancsot, sokkal jobb.

2.Meg kell várnunk a Kotlin fordítási feladat megkezdését, mielőtt csatolnánk a hibakeresőt. Tehát azt szeretné, hogy figyelemmel kíséri a build és keresse meg a feladatot:

:app:kaptDebugKotlin

és amikor meglátja, azonnal menjen az IDE-hez, és nyomja meg a debug gombot a távoli konfiguráción. Tapasztalatom szerint, ha nem csatolja időben, a feladat csak továbblép. Van néhány másodperced, hogy kitaláld, de ez egy kis verseny, hogy minden működjön.
EDIT: a fenti ^ már nem ez a helyzet! Az új gradle paranccsal bármikor csatolhatja a hibakeresőt, amelynek töréspontokat kell elérnie a processzor osztályában. Hurrá! Az egyetlen figyelmeztetés az, hogy néha a hibakereső lefagy a build más pontjain, csak indítsa újra vagy helyezze vissza a hibakeresést, és jó lesz menni.

tehát ez az. Most már lehet építeni, futtatni, és hibakeresés a kommentár processzor kapt. Boldog Kotlin-t.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.