什么是Kotlin中的generateStubs配置?

什么是Kotlin的generateStubs ? 这是我在build.gradle配置。

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

 kapt { generateStubs = true } 

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

编辑

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

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

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

 apply plugin: 'kotlin-kapt' 

您还将不得不从build.gradle删除generateStubs配置

但作为您关于generateStubs的详细信息的问题,我保留旧的Post原样。



使用 :

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

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


何时包括:

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

 kapt { generateStubs = true } 

这是如何工作的:

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

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

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

例如:

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