Android 项目包含 Java 和 Kotlin 文件,kapt 还是 annotationProcessor?

2022-09-01 07:27:28

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

在我的理解中,注释处理器必须用于 Java 文件,使用注释来生成代码,而 kapt 必须用于使用注释生成代码的 Kotlin 文件。

我有一个混合了两种语言的项目,我刚刚用kapt替换了build.gradle中的所有注释Processor依赖项。令人惊讶的是,它的构建似乎可以正常运行,但我不明白为什么kapt即使在Java文件上也能很好地工作......

有人可以向我解释吗?

谢谢


答案 1

首先,Kotlin 注释处理工具 (kapt) 使用 Java 编译器来运行注释处理器。如果您的项目包含任何 Java 类,kapt 会通过设计来处理它们。Kotlinlang 建议使用您之前从 Android 支持中使用的 incase。kaptannotationProcessor

JetBrains有一篇关于kapt如何更详细地工作的好文章,它来自2015年,但最新。


答案 2

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

dependencies {
  ...
  annotationProcessor "com.google.dagger:dagger-compiler:$dagger-version"
}

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

apply plugin: 'kotlin-kapt' //Must include
dependencies {
    ...
    kapt "com.google.dagger:dagger-compiler:$dagger-version"
}

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

更多详情:链接


推荐