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

102

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

enter image description here

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

enter image description here

如何解决这个问题而不需要降级到之前的gradle版本?是否有更新的android-apt可以解决这个问题?

5个回答

181

android-apt 插件已被弃用。
请查看迁移指南

从 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已经被弃用了。 - Bronx
1
在Android Gradle插件中,Google有一个明确的检查,这就是你所看到的。未来的Android Gradle版本将不兼容android-apt的工作方式,这就是进行该检查的原因。 - botteaap
检查在哪里? - ericn
我没有任何APT包,但仍然收到这个警告。编辑:结果是realm引起的。 - behelit
我在代码中没有看到NDROID-pt,但是仍然出现错误。可能是什么问题? - Mubashar
我也遇到了同样的问题。即使我没有使用任何属于apt的东西,但是像@Mubashar所说,我注释掉了应用程序插件,这对我有用。现在代码正在编译。但是这是怎么回事呢?我们不能使用realm吗? - Abdul Waheed

49

对我来说,当我使用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以获取最新版本。


15
  1. 移除 apt 插件

  2. 更改:

    apt -> compile

    testApt -> testAnnotationProcessor

    androidTestApt -> androidTestAnnotationProcessor

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

vectorDrawables.useSupportLibrary = true


6

借鉴@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"

1
如果注解处理器有参数,那么可能需要更改这个:
apt {
    arguments {
        KEY "VALUE"
    }
}

转换为:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接