web-dev-qa-db-fra.com

Qu'est-ce que la configuration generateStubs dans Kotlin?

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?

19
kimkevin

[~ # ~] é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.


Quand inclure:

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

20
Dipali s.