带有 Java 和 Kotlin 文件、kapt 或 annotationProcessor 的 Android 项目?
Posted
技术标签:
【中文标题】带有 Java 和 Kotlin 文件、kapt 或 annotationProcessor 的 Android 项目?【英文标题】:Android project with Java and Kotlin files, kapt or annotationProcessor? 【发布时间】:2018-10-06 06:04:47 【问题描述】:我想知道在 Android 项目中混合 Java 和 Kotlin 文件是否必须使用 annotationProcessor 或 kapt,或两者都使用?
据我了解 annotationProcessor 必须用于 Java 文件,使用注解进行代码生成,kapt 必须用于 Kotlin 使用注释生成代码的文件。
我有一个混合两种语言的项目,我只是用 kapt 替换了 build.gradle 中的所有 annotationProcessor 依赖项。 令人惊讶的是,它构建并且似乎运行正确,但我不明白为什么 kapt 即使使用 Java 文件也能很好地工作......
谁能给我解释一下?
谢谢
【问题讨论】:
【参考方案1】:首先,Kotlin Annotation 处理工具 (kapt) 使用 Java 编译器来运行注解处理器。如果您的项目包含任何 Java 类,kapt 会按设计处理它们。 Kotlinlang 建议使用 kapt
,以防您之前使用 android 支持中的 annotationProcessor
。
JetBrains 有一个很好的article,关于 kapt 如何更详细地工作,它从 2015 年开始,但一直是最新的。
【讨论】:
【参考方案2】:在 Java 中,您可以指定 annotationProcessor(或 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 文件,因此您不需要保留 annotationProcessor 依赖项。
更多详情:link
【讨论】:
我尝试添加应用插件:'kotlin-kapt',应用程序无法构建,现在我无法使用任何需要 kapt 的东西,知道如何解决这个问题@Oxalihan 有没有annotationProcessor
配置也能获取kotlin
文件?以上是关于带有 Java 和 Kotlin 文件、kapt 或 annotationProcessor 的 Android 项目?的主要内容,如果未能解决你的问题,请参考以下文章