什么是Kotlin中的generateStubs配置?
什么是Kotlin的generateStubs
? 这是我在build.gradle
配置。
我在这里的公共文档中找不到它: http : //kotlinlang.org/docs/reference/kapt.html
kapt { generateStubs = true }
如果我在我的项目中使用Java
和Kotlin(1.2)
,仍然需要添加?
编辑 :
如果我在我的项目中使用Java和Kotlin(1.2),仍然需要添加
不 , 1.0.4版本引入了注释处理API的一个新的实验实现。 现在不需要在build.gradle
配置这个generateStubs
了。
如果要启用它,请将以下内容添加到build.gradle
:
apply plugin: 'kotlin-kapt'
您还将不得不从build.gradle
删除generateStubs
配置
但作为您关于generateStubs
的详细信息的问题,我保留旧的Post原样。
使用 :
使用kapt
: generatestubs = 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构建
- 添加一个Fragment后,Android工作室分解了我的build.gradle文件
- 在Android Studio 3.0 Canary中,Gradle Sync失败
- IntelliJ中的Gradle SourceSet依赖关系
- 无法解析:com.google.firebase:firebase-auth:11.0.2
- Android Gradle奇怪的错误
- Kotlin应用程序与Gradle应用程序插件
- 在Idea中Kotlin脚本文件的语法高亮
- Holdr in Kotlin的未解决的参考
- 无法为org.gradle.api.Projecttypes的项目’core’设置未知属性’transitive’