使用Java和Kotlin文件的Android项目,kapt还是annotationProcessor?

gxe*_*ela 14 java apt gradle kotlin kapt

我想知道在混合JavaKotlin文件的Android项目中,我们必须使用annotationProcessor或kapt,还是两者兼而有之?

在我的理解中,annotationProcessor必须使用注释进行代码生成的Java文件,kapt必须使用注释生成代码来生成Kotlin文件.

我有一个混合两种语言的项目,我刚刚用kapt替换了build.gradle中的所有annotationProcessor依赖项.令人惊讶的是它构建并且似乎运行正常但我不明白为什么kapt即使使用Java文件也能正常运行...

有人可以向我解释一下吗?

谢谢

Unl*_*uto 9

首先,Kotlin注释处理工具(kapt)使用Java编译器运行注释处理器。如果您的项目包含任何Java类,则kapt会设计使然。Kotlinlang建议使用kapt柜面你使用annotationProcessor从之前的Android的支持。

JetBrains上有一篇不错的文章,详细介绍了kapt的工作原理,该文章始于2015年,但截止日期为UP。


0xA*_*iHn 7

在Java中,您可以按如下所示指定注解处理器(或apt)依赖项:

dependencies {
  ...
  annotationProcessor "com.google.dagger:dagger-compiler:$dagger-version"
}
Run Code Online (Sandbox Code Playgroud)

在Kotlin中,您必须添加kotlin-kapt插件以启用kapt,然后替换annotationProcessorkapt

apply plugin: 'kotlin-kapt' //Must include
dependencies {
    ...
    kapt "com.google.dagger:dagger-compiler:$dagger-version"
}
Run Code Online (Sandbox Code Playgroud)

就这样!请注意,kapt会处理您的Java文件以及kotlin文件,因此您无需保留注解处理器依赖项。

有关更多详细信息:链接