Gradle 同步失败:更新到 Gradle 4.0.0 后无法找到方法

Wal*_*lid 7 android gradle android-studio build.gradle

我将 gradle 更新为 4.0.0

classpath 'com.android.tools.build:gradle:4.0.0'
Run Code Online (Sandbox Code Playgroud)

和 distributionUrl 到:

distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip
Run Code Online (Sandbox Code Playgroud)

同步项目后我得到:

无法找到方法“org.gradle.api.tasks.TaskInputs.property(Ljava/lang/String;Ljava/lang/Object;)Lorg/gradle/api/tasks/TaskInputs;”。

我知道,如果我降级版本,项目将正确同步。但是有什么地方不兼容吗?如果是真的,为什么会有一些更新?

rak*_*kex 16

这可能是因为任何 3rd 方 Gradle 插件不支持新的 Tasks API。就我而言,这是因为 greendao Gradle 插件。

如果您使用的是 greendao,请将其更新到最新版本 3.3.0:

classpath 'org.greenrobot:greendao-gradle-plugin:3.3.0'
Run Code Online (Sandbox Code Playgroud)

否则,您将不得不找到导致问题的插件。


Moh*_*man 9

Android Studio 4.0在使用Gradle Plugin 4.0.0和 Gradle 版本gradle-6.1.1-all.zip时出现以下错误的解决方法

错误: 无法找到方法“org.gradle.api.tasks.TaskInputs.property(Ljava/lang/String;Ljava/lang/Object;)Lorg/gradle/api/tasks/TaskInputs;”。

根本原因: 问题源于旧版本的 GreenDao 库(早于 3.3.0)不支持 Gradle 6.0.0 和早于 3.3.x 的 Gradle 插件

解决方案: 从最新版本(GreenDao v3.3.0)的发布说明中收集,最新版本中增加了以下支持: --- 支持Android Gradle Plugin 3.3+ APIs。#942 --- 支持 Gradle 6.0。#1002

在根 build.gradle(项目)中将库更新到 3.3.0 后

classpath 'org.greenrobot:greendao-gradle-plugin:3.3.0'
Run Code Online (Sandbox Code Playgroud)

在 build.gradle 模块中:

implementation "org.greenrobot:greendao:3.3.0"
Run Code Online (Sandbox Code Playgroud)

问题得到解决。

特别注意: 任何其他不支持最新 gradle 插件的库都可能抛出类似的错误。要确定哪个库导致了问题,您可以运行:

./gradlew tasks --stacktrace
Run Code Online (Sandbox Code Playgroud)