【发布时间】:2017-03-03 09:13:14
【问题描述】:
从 2.2 升级到 2.3 后,我看到了这个警告
当我尝试编译项目时,我看到了这个编译错误
如何在不降级到以前的 gradle 版本的情况下解决此问题? android-apt 有什么更新可以解决这个问题吗?
【问题讨论】:
标签: android android-studio gradle android-apt
从 2.2 升级到 2.3 后,我看到了这个警告
当我尝试编译项目时,我看到了这个编译错误
如何在不降级到以前的 gradle 版本的情况下解决此问题? android-apt 有什么更新可以解决这个问题吗?
【问题讨论】:
标签: android android-studio gradle android-apt
android-apt 插件已被弃用。
在这里查看migration guide:
从 Android Gradle 插件版本 2.2 开始,之前由 android-apt 提供的所有功能现在都可以在 Android 插件中使用。
您可以按照迁移指南删除android-apt 以获得等效功能。
迁移指南中的重要部分:
- 确保您使用的是 Android Gradle 2.2 插件或更高版本。
- 从您的构建脚本中删除
android-apt插件- 将所有
apt、androidTestApt和testApt依赖项更改为新格式:
dependencies {
compile 'com.google.dagger:dagger:2.0'
annotationProcessor 'com.google.dagger:dagger-compiler:2.0'
}
在 Android Gradle 插件中也有一个明确的检查,这就是你所看到的:
使用不兼容的插件进行注解处理 android-apt
未来的 Android Gradle 插件版本将不兼容与 android-apt 的工作方式,这就是检查的原因。
【讨论】:
android-apt 的工作方式不兼容,这就是检查的原因。
对我来说,我在使用 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 以获取最新版本
【讨论】:
移除 apt 插件
变化:
apt -> 编译
testApt -> testAnnotationProcessor
androidTestApt -> androidTestAnnotationProcessor
在您的 build.gradle(应用程序)中,添加到 defaultConfig:
vectorDrawables.useSupportLibrary = true
【讨论】:
在这里捎带@Gabriele Mariotti,因为他的回答很准确,暗示了这一点,但没有说明。 Gradle 也不建议这是一个有效的选项,尽管它也是。 androidTestApt 和 testApt 的等效测试是 androidTestAnnotationProcessor 和 testAnnotationProcessor。
例子:
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"
【讨论】:
如果注释处理器有参数,也可能需要更改:
apt {
arguments {
KEY "VALUE"
}
}
到这里:
android {
...
defaultConfig {
...
javaCompileOptions {
annotationProcessorOptions {
arguments = ['KEY': 'VALUE']
}
}
}
}
【讨论】: