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

问题描述 投票:7回答:2

今天,我的团队中的多个开发人员在尝试运行任何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守护进程,然后重新启动 - 一切都无济于事。

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

android gradle
2个回答
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'


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数据绑定。

© www.soinside.com 2019 - 2024. All rights reserved.