升级到 Android Studio 2.3 后 android-apt 的不兼容插件

Incompatible plugins for android-apt after upgrading to Android Studio 2.3

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

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

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

android-apt 插件 已被弃用
在此处检查 migration guide:

As of the Android Gradle plugin version 2.2, all functionality that was previously provided by android-apt is now available in the Android plugin.

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

迁移指南中的重要部分:

  • Make sure you are on the Android Gradle 2.2 plugin or newer.
  • Remove the android-apt plugin from your build scripts
  • Change all apt, androidTestApt and testApt dependencies to their new format:
dependencies {
   compile 'com.google.dagger:dagger:2.0'
   annotationProcessor 'com.google.dagger:dagger-compiler:2.0'
}

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

using incompatible plugins for the annotation processing android-apt

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

在这里借用@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"

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

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

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

你需要做的是DELETE apply 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 以获得最新版本

  1. 删除 apt 插件

  2. 变化:

    apt -> 编译

    testApt -> testAnnotationProcessor

    androidTestApt -> androidTestAnnotationProcessor

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

vectorDrawables.useSupportLibrary = 真

如果注释处理器有参数,可能还需要更改此设置:

apt {
    arguments {
        KEY "VALUE"
    }
}

对此:

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