编辑:
如果我在我的项目中使用 Java 和 Kotlin(1.2),仍然需要
添加
否,在 1.0.4 版本中引入了注解处理 API 的新实验性实现。现在不用在build.gradle中配置这个generateStubs了。
如果您想启用它,请将以下内容添加到您的build.gradle:
apply plugin: 'kotlin-kapt'
您还必须从 build.gradle 中删除 generateStubs 配置
但作为您关于 generateStubs 上的详细信息的问题,我保留旧帖子的原样。
使用:
将kapt 与generatestubs = true 一起使用,以便使用dagger 2 或dbflow 等库,这将使编译器能够生成Java 和Kotlin 之间的互操作性 所需的存根类。除非启用generateStubs = true,否则“bootstrap”(自定义注解处理器,传递给javac,加载注解数据并调用其他注解处理器。)Java 代码需要引用生成的sources.pulled那个from
注意:生成的代码总是在Java,而不是Kotlin。
When to Include:
生成存根需要相对较多的工作,因为必须解析所有声明,并且有时了解返回类型需要分析表达式(= 符号后的函数体或属性初始化程序)。因此,在kapt 中使用存根会稍微减慢您的构建速度。这就是为什么存根默认关闭的原因,要启用它们,您需要在 build.gradle 文件中编写以下内容:
kapt {
generateStubs = true
}
这是如何工作的:
存根,编译器生成的中间类,允许从 Kotlin 引用“生成的”源,否则编译器将无法引用缺失的源。
生成的源代码在"build/generated/source/kapt/main" 中创建,因为它位于“build”下,通常从 IntelliJ 的项目源代码中排除,此源代码根将在构建脚本本身中标记。 p>
sourceSets {
main.java.srcDirs += [file("$buildDir/generated/source/kapt/main")]
}
示例:
Dagger2-example with Kotlin (1.1.50) annotation processor support Gradle build