【问题标题】:Android project with Java and Kotlin files, kapt or annotationProcessor?带有 Java 和 Kotlin 文件、kapt 或 annotationProcessor 的 Android 项目?
【发布时间】:2018-10-06 06:04:47
【问题描述】:

我想知道在 Android 项目中混合 JavaKotlin 文件是否必须使用 annotationProcessor 或 kapt,或两者都使用?

据我了解 annotationProcessor 必须用于 Java 文件,使用注解进行代码生成,kapt 必须用于 Kotlin 使用注释生成代码的文件。

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

谁能给我解释一下?

谢谢

【问题讨论】:

    标签: java gradle kotlin apt kapt


    【解决方案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 文件?
      猜你喜欢
      • 2018-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多