“支持的最低Gradle版本是4.4”错误今天开始;没有代码更改

时间:2018-02-25 06:11:08

标签: android gradle

今天,我的团队中的多个开发人员在尝试运行任何Gradle任务时都开始看到此错误。

* Where:
Build file 'C:\dev\src\my_app_name\app\build.gradle' line: 1

* What went wrong:
A problem occurred evaluating project ':app'.
> Failed to apply plugin [id 'com.android.application']
   > Minimum supported Gradle version is 4.4. Current version is 4.1. If using the gradle wrapper, try editing the distributionUrl in C:\dev\src\my_app_name\gradle\wrapper\gradle-wrapper.properties to gradle-4.4-all.zip

绝对没有进行任何代码或配置更改; Gradle构建突然开始失败。有人知道为什么会这样吗?我最好的猜测是依赖于特定版本的Gradle的插件会自动更新,但我不知道如何确定它是哪一个。行号表明它本身就是com.application.plugin插件。

我知道Android Studio更新通常需要相应升级到Gradle,但我的团队中没有人更新Android Studio。而且,根据Android-Studio-Gradle version compatibility table,Gradle 4.1仍然适用于Android Studio 3.0.1,这是我已经运行了一段时间。

我们最近开始使用Kotlin,我认为这可能是问题的一部分,但完全删除与Kotlin相关的所有内容都无济于事。

我尝试删除Gradle caches/目录,运行./gradlew cleanBuildCache,删除项目的build/目录,通过./gradlew --stop删除Gradle守护进程,然后重新启动 - 全部为no果。

我也尝试升级到Gradle 4.4,但是在DexMergerTransform(separate issue)期间导致了“CIRCULAR REFERENCE”NullPointerException错误,原因我完全不清楚。我希望能够强制我的环境不要立即采用Gradle 4.4依赖...但我不知道是什么突然引发了这种依赖。

2 个答案:

答案 0 :(得分:9)

问题是我们使用的是非特定版本的插件。当对插件进行更改时,新版本被下载到我们的开发环境中,并且它引入了对Gradle版本的依赖性高于我们使用的版本。

在我们的案例中,这是罪魁祸首:

classpath 'com.jakewharton:butterknife-gradle-plugin:9.0.0-SNAPSHOT'

降级到Butterknife插件的8.5.1版本消除了对Gradle 4.4的依赖。

您还可以选择链接到特定的预发布“夜间”版本。但是,这并不理想,因为这些位不会长时间保持可用,您可能希望下载构建并将其保存在本地lib中。例如:

classpath 'com.jakewharton:butterknife-gradle-plugin:9.0.0-20180727.012508-40'

答案 1 :(得分:0)

可以通过编辑文件9.0.0来为版本gradle/wrapper/gradle-wrapper.properties的插件提供Gradle的期望版本,而不是降级。例如:

distributionUrl=https\://services.gradle.org/distributions/gradle-4.5-all.zip

版本4.5运行稳定,可能不会像circular reference那样创建4.4。并且当在GitHub上查看issues跟踪器时,此Gradle插件可能会增加更多的问题,而不是达到真正的目的-因为Android SDK已经支持双向数据绑定。

当前artifacts仍将8.8.1列为最新版本;尽管SNAPSHOT几乎不稳定,但是一年以来没有发生任何变化,这暗示该项目可能已经被放弃了……很可能是由于Architecture Components数据绑定。