Qu'est-ce que generateStubs
pour Kotlin? Voici ma configuration dans build.gradle
.
Je ne le trouve pas dans le document public ici: http://kotlinlang.org/docs/reference/kapt.html
kapt {
generateStubs = true
}
Si j'utilise Java
et Kotlin(1.2)
dans mon projet, il faut quand même ajouter?
[~ # ~] éditez [~ # ~] :
Si j'utilise Java et Kotlin (1.2) dans mon projet, il faut quand même ajouter
Non , avec la version 1.0.4 introduit une nouvelle implémentation expérimentale de l'API de traitement des annotations. Maintenant, il n'est plus nécessaire de configurer ce generateStubs
dans build.gradle
.
Ajoutez ce qui suit à votre build.gradle
si vous souhaitez l'activer:
apply plugin: 'kotlin-kapt'
Vous devrez également supprimer la configuration generateStubs
de build.gradle
Mais comme votre question sur les détails sur generateStubs
je garde mon ancien message tel quel.
Utilisez:
Utilisation de kapt
avec: generatestubs = true
, afin d'utiliser des bibliothèques comme dagger 2 ou dbflow, cela permettra au compilateur de générer les classes de stub requises pour l'interopérabilité entre Java et Kotlin . À moins que generateStubs = true
est activé, "bootstrap
" ( Un processeur d'annotation personnalisé, qui est passé à javac
, charge les données d'annotation et appelle d'autres processeurs d'annotation.) Java est requis pour référencer les sources générées. Il a été tiré from
Remarque: les codes générés sont toujours dans Java
pas dans Kotlin
.
La génération de stubs nécessite relativement beaucoup de travail, car toutes les déclarations doivent être résolues, et la connaissance des types de retour nécessite parfois une analyse de l'expression (corps de fonctions ou initialiseurs de propriété après le =
signe). Ainsi, l'utilisation de stubs dans kapt
ralentit quelque peu votre build. C'est pourquoi les talons sont désactivés par défaut, et pour les activer, vous devez écrire ce qui suit dans votre build.gradle
fichier:
kapt {
generateStubs = true
}
Comment cela fonctionne:
Les stubs, classes intermédiaires générées par le compilateur, permettent de référencer les sources "générées" à partir de Kotlin, sinon le compilateur ne pourra pas référencer les sources manquantes.
La source générée est créée dans "build/generated/source/kapt/main"
, comme c'est sous "build
", normalement exclu des sources de projet d'IntelliJ, cette racine source sera marquée dans la construction script lui-même.
sourceSets {
main.Java.srcDirs += [file("$buildDir/generated/source/kapt/main")]
}
Exemple:
Dagger2-example avec Kotlin (1.1.50) support du processeur d'annotation Gradle build