web-dev-qa-db-fra.com

Android projet avec Java et fichiers Kotlin, kapt ou annotationProcessor?

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

18
gxela

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.

10
UnlikePluto

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

10
0xAliHn