【问题标题】:Incompatible plugins for android-apt after upgrading to Android Studio 2.3升级到 Android Studio 2.3 后 android-apt 的插件不兼容
【发布时间】:2017-03-03 09:13:14
【问题描述】:

从 2.2 升级到 2.3 后,我看到了这个警告

当我尝试编译项目时,我看到了这个编译错误

如何在不降级到以前的 gradle 版本的情况下解决此问题? android-apt 有什么更新可以解决这个问题吗?

【问题讨论】:

    标签: android android-studio gradle android-apt


    【解决方案1】:

    android-apt 插件已被弃用
    在这里查看migration guide

    从 Android Gradle 插件版本 2.2 开始,之前由 android-apt 提供的所有功能现在都可以在 Android 插件中使用。

    您可以按照迁移指南删除android-apt 以获得等效功能。

    迁移指南中的重要部分:

    • 确保您使用的是 Android Gradle 2.2 插件或更高版本。
    • 从您的构建脚本中删除 android-apt 插件
    • 将所有 aptandroidTestApttestApt 依赖项更改为新格式:
    dependencies {
       compile 'com.google.dagger:dagger:2.0'
       annotationProcessor 'com.google.dagger:dagger-compiler:2.0'
    }
    

    在 Android Gradle 插件中也有一个明确的检查,这就是你所看到的:

    使用不兼容的插件进行注解处理 android-apt

    未来的 Android Gradle 插件版本将不兼容android-apt 的工作方式,这就是检查的原因。

    【讨论】:

    • 谢谢!我不知道 apt 已被弃用。
    • 在 Android Gradle 插件中,Google 对其进行了明确的检查,这就是您所看到的。未来的 Android Gradle 版本将与 android-apt 的工作方式不兼容,这就是检查的原因。
    • 支票在哪里?
    • 我没有任何 apt,但仍然收到此警告。编辑:原来是领域
    • 我没有在任何地方的代码中看到 NDROID-pt,但出现错误。可能是什么问题?
    【解决方案2】:

    对我来说,我在使用 Contentful 的 Vault 库时遇到了这个错误,该库指定您包括:

    apply plugin: 'com.neenbedankt.android-apt'
    

    compile 'com.contentful.vault:core:2.1.0'
    apt 'com.contentful.vault:compiler:2.1.0'
    

    你需要做的是DELETEapply plugin: 'com.neenbedankt.android-apt'

    然后更改

    compile 'com.contentful.vault:core:2.1.0'
    apt 'com.contentful.vault:compiler:2.1.0'
    

    annotationProcessor 'com.contentful.vault:compiler:2.1.0'
    annotationProcessor 'com.contentful.vault:core:3.0.1'
    

    您可以随时查看https://github.com/contentful/vault 以获取最新版本

    【讨论】:

      【解决方案3】:
      1. 移除 apt 插件

      2. 变化:

        apt -> 编译

        testApt -> testAnnotationProcessor

        androidTestApt -> androidTestAnnotationProcessor

      3. 在您的 build.gradle(应用程序)中,添加到 defaultConfig:

      vectorDrawables.useSupportLibrary = true

      【讨论】:

        【解决方案4】:

        在这里捎带@Gabriele Mariotti,因为他的回答很准确,暗示了这一点,但没有说明。 Gradle 也不建议这是一个有效的选项,尽管它也是。 androidTestApttestApt 的等效测试是 androidTestAnnotationProcessortestAnnotationProcessor

        例子:

        testApt "com.google.dagger:dagger-compiler:$daggerVersion"
        androidTestApt "com.google.dagger:dagger-compiler:$daggerVersion"
        

        应该改为

        testAnnotationProcessor "com.google.dagger:dagger-compiler:$daggerVersion"
        androidTestAnnotationProcessor "com.google.dagger:dagger-compiler:$daggerVersion"
        

        【讨论】:

          【解决方案5】:

          如果注释处理器有参数,也可能需要更改:

          apt {
              arguments {
                  KEY "VALUE"
              }
          }
          

          到这里:

          android {
              ...
              defaultConfig {
                  ...
                  javaCompileOptions {
                      annotationProcessorOptions {
                          arguments = ['KEY': 'VALUE']
                      }
                  }
              }
          }
          

          【讨论】:

            猜你喜欢
            • 2020-01-26
            • 1970-01-01
            • 2017-08-07
            • 1970-01-01
            • 2017-08-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多