我想知道,如果在 Android 项目混合 Java 和 Kotlin 文件,我们必须使用annotationProcessor或kapt,或两者兼而有之?
在我的理解中, annotationProcessor 必须使用注释生成 Java 文件, kapt 必须用于 Kotlin 文件使用注释生成代码。
我有一个混合两种语言的项目,我刚刚用kapt替换了build.gradle中的所有annotationProcessor依赖项。 令人惊讶的是它构建并且似乎运行正常,但我不明白为什么kapt即使使用Java文件也能正常工作......
有人可以向我解释一下吗?
谢谢
答案 0 :(得分:6)
首先,Kotlin Annotation处理工具(kapt)使用Java编译器来运行注释处理器。如果你的项目包含任何Java类,kapt会按照设计来处理它们。 Kotlinlang建议您使用kapt
之前使用Android支持中的annotationProcessor
。
JetBrains有一个很好的article关于kapt如何更详细地工作,从2015年开始,但是在UP-TO-DATE。
答案 1 :(得分:2)
在Java中,您可以按如下所示指定注解处理器(或apt)依赖项:
dependencies {
...
annotationProcessor "com.google.dagger:dagger-compiler:$dagger-version"
}
在Kotlin中,您必须添加kotlin-kapt
插件以启用kapt,然后将annotationProcessor
替换为kapt
:
apply plugin: 'kotlin-kapt' //Must include
dependencies {
...
kapt "com.google.dagger:dagger-compiler:$dagger-version"
}
仅此而已!请注意,kapt会处理您的Java文件以及kotlin文件,因此您无需保留注释处理器依赖项。
有关更多详细信息:link