Processamento De Anotações com Kapt e Gradle

KOTLIN!! … é o que todo o Google estava gritando coletivamente com os desenvolvedores do Android na conferência de E/S deste ano. E isso é ótimo — Kotlin é uma linguagem completa com ótimo suporte IDE que torna a escrita de aplicativos Android muito mais fácil e rápida. Kotlin é, no entanto, ainda muito novo, com a versão 1.0 lançada em fevereiro do ano passado. E como com qualquer coisa nova, nem tudo funciona bem.

uma coisa que tem sido dolorosa por um tempo, mas está começando a se tornar mais fácil, está usando Kotlin com processadores de anotação. Mas mesmo com muitos dos problemas funcionais resolvidos, não há uma tonelada de documentação sobre como todas as peças andam juntas, então vamos passar por isso.

vamos supor que você já está familiarizado com o assunto dos processadores de anotação Java. Com isso em mente, existem realmente apenas algumas diferenças.

Kapt é a Ferramenta de processamento de anotação Kotlin, e está em boa forma nos dias de hoje. Se você quiser fazer referência ao código gerado do Kotlin, você precisa usar o kapt. Para fazer isso, basta incluir o plugin em sua compilação.gradle arquivo com a linha:

apply plugin: 'kotlin-kapt'

e onde você normalmente usaria a palavra-chave annotationProcessor para especificar sua dependência do processador, em vez disso, use a palavra-chave kapt.

é isso. Acabou.

não exatamente

Ok, você está quase pronto. A próxima e mais interessante pergunta é: como você depura um processador de anotação compilado com kapt?

se você está vindo de java, você pode estar familiarizado com a depuração de um processador de anotação executando javac a partir da linha de comando e, em seguida, anexando o depurador a ele. Mas kapt não está usando javac para compilar, está usando kotlinc. Assim, as instruções para a depuração de um processador de anotação da forma normal precisa ser muito ligeiramente modificado para kapt, de duas maneiras:

  1. O comando que pretende executar é agora:
./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"

Nota: O comando acima foi editado a partir da história original por causa de um comentário sobre este stackoverflow. O novo comando permite anexar o depurador a qualquer momento, em vez de esperar que o passo kapt comece e forçá-lo a tentar “pegá-lo”. Resumo-use este novo comando, é muito melhor.

2.Precisamos esperar que a tarefa de compilação Kotlin comece antes de anexarmos o depurador. Então você quer monitorar sua compilação e procurar a tarefa:

:app:kaptDebugKotlin

e quando você vê – lo, vá imediatamente para o seu IDE e pressione debug em sua configuração remota. Na minha experiência, se você não anexar a tempo, a tarefa simplesmente seguirá em frente. Você tem alguns segundos para descobrir, mas é uma corrida para que tudo funcione.
editar: o ^ acima não é mais o caso! Com o novo comando gradle, você pode anexar o depurador a qualquer momento e ele deve atingir pontos de interrupção em sua classe de processador. Yay! A única ressalva é que às vezes o depurador irá travar em outros pontos da compilação, basta reiniciar ou reconectar a depuração, e você estará pronto para ir.

então é realmente isso. Agora você pode criar, executar e depurar seu processador de anotações com o kapt. Feliz Kotlin-ing.

Deixe uma resposta

O seu endereço de email não será publicado.