101

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

在此处输入图像描述

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

在此处输入图像描述

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

4

5 回答 5

181

android-apt插件已被弃用
在此处查看迁移指南

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

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

迁移指南中的重要部分:

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

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

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

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

于 2017-03-03T09:15:24.807 回答
48

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

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

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

你需要做的是删除 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以获取最新版本

于 2017-11-02T06:40:12.407 回答
15
  1. 删除 apt 插件

  2. 改变:

    apt -> 编译

    testApt -> testAnnotationProcessor

    androidTestApt -> androidTestAnnotationProcessor

  3. 在您的 build.gradle (app) 中,添加到 defaultConfig:

vectorDrawables.useSupportLibrary = true

于 2018-01-22T11:47:46.117 回答
6

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

例子:

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"
于 2017-10-31T17:06:03.570 回答
1

万一注解处理器有参数,也可能不得不改变这一点:

apt {
    arguments {
        KEY "VALUE"
    }
}

对此:

android {
    ...
    defaultConfig {
        ...
        javaCompileOptions {
            annotationProcessorOptions {
                arguments = ['KEY': 'VALUE']
            }
        }
    }
}
于 2018-02-23T10:46:53.017 回答