przetwarzanie adnotacji za pomocą Kapt i Gradle

KOTLIN!! … to jest to, co wszyscy Google wspólnie krzyczeli na programistów Androida na tegorocznej konferencji I / O. I to świetnie — Kotlin to w pełni funkcjonalny język z doskonałą obsługą IDE, który sprawia, że pisanie aplikacji na Androida jest o wiele łatwiejsze i szybsze. Kotlin jest jednak wciąż bardzo nowy, z wersją 1.0 wydaną zaledwie w lutym ubiegłego roku. I jak w przypadku wszystkiego, co nowe, nie wszystko działa.

jedną rzeczą, która jest bolesna od jakiegoś czasu, ale zaczyna być łatwiejsza, jest używanie Kotlina z procesorami adnotacji. Ale nawet przy wielu problemach funkcjonalnych wypracowanych, nie ma tony dokumentacji o tym, jak wszystkie elementy idą w parze, więc przejdźmy przez to.

Zakładamy, że jesteś już obeznany w temacie procesorów adnotacji Java. Mając to na uwadze, istnieje naprawdę tylko kilka różnic.

Kapt jest narzędziem do przetwarzania adnotacji Kotlin i jest w całkiem dobrym stanie w dzisiejszych czasach. Jeśli chcesz być w stanie odwoływać się do wygenerowanego kodu z Kotlina, musisz użyć kapt. Aby to zrobić, po prostu dołącz wtyczkę do swojej kompilacji.plik gradle z linią:

apply plugin: 'kotlin-kapt'

i tam, gdzie zwykle używasz słowa kluczowego annotationProcessor, aby określić zależność procesora, zamiast tego użyj słowa kluczowego kapt.

to wszystko. Jesteś skończony.

nie do końca

Ok, prawie skończyłeś. Następne i najciekawsze pytanie brzmi: jak debugować procesor adnotacji skompilowany za pomocą kapt?

Jeśli korzystasz z języka java, możesz być zaznajomiony z debugowaniem procesora adnotacji, uruchamiając javac z wiersza poleceń, a następnie dołączając do niego debugger. Ale kapt nie używa javac do kompilacji, tylko używa kotlinc. Tak więc instrukcje debugowania procesora adnotacji w normalny sposób muszą być bardzo nieznacznie zmodyfikowane dla kapt, na dwa sposoby:

  1. polecenie, które chcemy uruchomić jest teraz:
./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"

uwaga: powyższe polecenie zostało edytowane z oryginalnego wątku z powodu komentarza do tego stosu. Nowe polecenie pozwala na dołączenie debuggera w dowolnym momencie, zamiast czekać na rozpoczęcie kroku kapt i zmuszać cię do spróbowania go „złapać”. Podsumowanie-użyj tego nowego polecenia, jest o wiele lepiej.

2.Musimy poczekać na rozpoczęcie zadania kompilacji Kotlina, zanim dołączymy debugger. Więc chcesz śledzić swoją kompilację i szukać zadania:

:app:kaptDebugKotlin

a kiedy to zobaczysz, natychmiast przejdź do środowiska programistycznego i kliknij Debuguj w zdalnej konfiguracji. Z mojego doświadczenia wynika, że jeśli nie dołączysz na czas, zadanie po prostu zejdzie z martwego punktu. Masz kilka sekund, aby to rozgryźć, ale jest to rodzaj wyścigu, aby wszystko działało.
edit: powyższe ^ już nie ma miejsca! Za pomocą nowego polecenia gradle możesz dołączyć debugger w dowolnym momencie i powinien trafić punkty przerwania w klasie procesora. Yay! Jedynym zastrzeżeniem jest to, że czasami debugger zawiesi się w innych punktach kompilacji, po prostu uruchom ponownie lub podłącz debugowanie, i będziesz gotowy do pracy.

więc to jest naprawdę to. Teraz Można budować, uruchomić, i debugować procesor adnotacji Z kapt. Happy Kotlin-ing.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.