Je voudrais savoir si dans un Android projet mixant Java et Kotlin nous devons utiliser annotationProcessor ou kapt, ou les deux?
À ma connaissance, annotationProcessor doit être utilisé pour Java fichiers utilisant des annotations pour la génération de code, et kapt doit être utilisé pour Kotlin = fichiers utilisant des annotations pour la génération de code.
J'ai un projet mélangeant les deux langues, et je viens de remplacer toutes les dépendances annotationProcessor dans le build.gradle par kapt. Étonnamment, il se construit et semble fonctionner correctement, mais je ne comprends pas pourquoi kapt fonctionne bien même avec les fichiers Java ...
Quelqu'un peut-il m'expliquer?
Je vous remercie
Tout d'abord, l'outil de traitement d'annotations Kotlin (kapt) utilise le compilateur Java pour exécuter les processeurs d'annotation. Si votre projet contient des classes Java, kapt prend soin Kotlinlang recommande d'utiliser kapt
au cas où vous auriez utilisé annotationProcessor
du support Android Android auparavant).
JetBrains a une belle article sur la façon dont kapt fonctionne plus en détail, c'est à partir de 2015 mais à jour.
Dans Java vous pouvez spécifier la dépendance annotationProcessor (ou apt) comme ci-dessous:
dependencies {
...
annotationProcessor "com.google.dagger:dagger-compiler:$dagger-version"
}
Dans Kotlin, vous devez ajouter le kotlin-kapt
plugin pour activer kapt, puis remplacez annotationProcessor
par kapt
:
apply plugin: 'kotlin-kapt' //Must include
dependencies {
...
kapt "com.google.dagger:dagger-compiler:$dagger-version"
}
C'est tout! Notez que kapt prend soin de vos fichiers Java ainsi que du fichier kotlin, vous n'avez donc pas besoin de conserver la dépendance annotationProcessor.
Pour plus de détails: lien