什么是Kotlin中的generateStubs配置?

kim*_*vin 19 android kotlin build.gradle

什么是generateStubsKotlin?这是我的配置build.gradle.

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

kapt {
  generateStubs = true
}
Run Code Online (Sandbox Code Playgroud)

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

Dip*_* s. 20

编辑:

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

,随着1.0.4版本引入了注释处理API的新实验实现.现在有没有必要配置此generateStubsbuild.gradle.

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

apply plugin: 'kotlin-kapt' 
Run Code Online (Sandbox Code Playgroud)

您还必须从中删除generateStubs配置build.gradle

但正如你关于generateStubs我的详细信息的问题,我保留了我的旧帖子.



使用 :

使用kapt:generatestubs = true,以便使用像dagger 2或dbflow这样的库,这将使编译器能够生成Java和Kotlin之间互操作性所需的存根类.除非generateStubs = true被使能," bootstrap"(自定义注解处理器,其被传递到javac,装载注释数据并调用其他注释处理器.)是必需的Java代码来产生参考sources.pulled即

注意:生成的代码始终Java不在Kotlin.


何时包括:

生成存根需要相对多的工作,因为必须解决所有声明,有时知道返回类型需要分析表达式(函数体或=符号后的属性初始值设定项).因此,使用存根可以kapt减慢构建速度.这就是默认关闭存根的原因,要启用它们,您需要在build.gradle文件中编写以下内容:

kapt {
  generateStubs = true
}
Run Code Online (Sandbox Code Playgroud)

这是如何工作的:

Stubs,编译器生成的中间类,允许从Kotlin引用"生成的"源,否则编译器将无法引用缺少的源.

生成的源是"build/generated/source/kapt/main"在" build" 下创建的,通常从IntelliJ的项目源中排除,此源根目录将在构建脚本本身中标记.

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

示例:

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