什么是Kotlin中的generateStubsconfiguration?

什么是Kotlin的generateStubs ? 这是我在build.gradleconfiguration。

我在这里的公共文档中找不到它: http : //kotlinlang.org/docs/reference/kapt.html

 kapt { generateStubs = true } 

如果我在我的项目中使用JavaKotlin(1.2) ,仍然需要添加?

Solutions Collecting From Web of "什么是Kotlin中的generateStubsconfiguration?"

编辑

如果我在我的项目中使用Java和Kotlin(1.2),仍然需要添加

1.0.4版本引入了注释处理API的一个新的实验实现。 现在不需要在build.gradleconfiguration这个generateStubs了。

如果要启用它,请将以下内容添加到build.gradle

 apply plugin: 'kotlin-kapt' 

你也将不得不从build.gradle删除generateStubsconfiguration但是,因为你的问题是有关generateStubs细节,我保持我的旧答案,因为它是。



使用 :

使用kaptgeneratestubs = true ,为了使用像dagger 2或dbflow这样的库,这将使编译器能够生成Java和Kotlin之间互操作所需的存根类。 除非启用了generateStubs = true ,否则“ bootstrap ”( 传递给javac自定义注释处理器加载注释数据并调用其他注释处理器)。需要Java代码来引用生成的源代码。

注意:生成的代码总是在Java而不是在Kotlin


何时包括:

生成存根需要相当多的工作,因为所有的声明都必须被parsing,有时候知道返回types需要分析expression式(函数体或者=符号后的属性初始值设定项)。 所以,在kapt使用存根会减慢你的构build。 这就是为什么存根默认是closures的,为了启用它们,您需要在build.gradle文件中写入以下内容:

 kapt { generateStubs = true } 

这是如何工作的:

存根,编译器生成的中间类,允许从Kotlin引用“生成的”源,否则编译器将无法引用缺失的源。

生成的源代码是在"build/generated/source/kapt/main" ,因为它位于“ build ”下,通常从IntelliJ的项目源中排除,此源代码将在构build脚本中标记。

 sourceSets { main.java.srcDirs += [file("$buildDir/generated/source/kapt/main")] } 

例如:

Dagger2-Kotlin(1.1.50)注释处理器的例子支持Gradle构build