升级到3.0后,Gradle构建失败

74

我最近将项目的gradle版本从2.14.1更新到3.0,此后每次构建时都会出现以下错误:

Error:Cause: org.gradle.api.internal.tasks.DefaultTaskInputs$TaskInputUnionFileCollection无法转换为org.gradle.api.internal.file.collections.DefaultConfigurableFileCollection 导致这种意外错误的可能原因包括:

  • Gradle的依赖缓存可能已损坏(有时在网络连接超时后会发生)。 重新下载依赖项并同步项目(需要网络)
  • Gradle构建进程(守护进程)的状态可能已损坏。停止所有Gradle守护进程可能会解决此问题。 停止Gradle构建进程(需要重新启动)
  • 您的项目可能正在使用与项目中的其他插件或项目请求的Gradle版本不兼容的第三方插件。
对于损坏的Gradle进程,您还可以尝试关闭IDE,然后终止所有Java进程。

我在Google上搜索到一些解决方法,例如这个,但是没有一个有效。有人知道如何解决吗?


你使用的插件版本是哪个? - Gabriele Mariotti
1
最新的稳定Gradle插件(2.1.3)适用于Gradle 2.14.1或更高版本,但不支持Gradle 3.x。 - Gabriele Mariotti
2
它说Gradle 2.14.1或更高版本,这并不真正排除3.x版本? - Drilon Blakqori
你可以尝试使用最新的 beta 版本:2.2.0-beta2,但我不知道它是否受支持。 - Gabriele Mariotti
13个回答

82

将Gradle构建工具升级到最新版本。

一种简单的方法是在您的build.gradle文件中将最新版本的构建工具作为依赖项添加,例如:

dependencies {
    classpath 'com.android.tools.build:gradle:2.2.0-beta1'
}

你可以运行 gradle tasks 命令,Gradle 会下载你需要的所有内容。

在 Android Studio 2.2 稳定版于2016年9月19日发布后,构建工具的最新版本是 2.2.0。所以你可以通过以下方式进行修复:

dependencies {
    classpath 'com.android.tools.build:gradle:2.2.0'
}

由于 Android Studio 2.4 稳定版尚未发布(截至2017年5月4日),因此构建工具的最新稳定版本是2.3.1。

dependencies {
    classpath 'com.android.tools.build:gradle:2.3.1'
}
如果您将此构建工具版本更新到2.3.*,则还应在/yourProjectRoot/gradle/wrapper/gradle-wrapper.properties文件中将Gradle包装器版本更新为3.3。(我知道这与问题“升级到3.0后Gradle构建失败”不匹配,但我强烈建议您按照Google的建议使用最新的构建工具)顺便说一句,构建工具版本2.3.1仅存在于jCenter上,而不是MavenCentral。因此,如果您在终端中运行gradlew命令时遇到下面的错误,请注意。
Could not find com.android.tools.build:gradle:2.3.1.
 Searched in the following locations:
     https://repo1.maven.org/maven2/com/android/tools/build/gradle/2.3.1/gradle-2.3.1.pom
     https://repo1.maven.org/maven2/com/android/tools/build/gradle/2.3.1/gradle-2.3.1.jar

只需将 mavenCentral() 替换为 jcenter(),如下所示:

 repositories {
    jcenter()
    //mavenCentral()
}

请检查此链接 https://dev59.com/Mn8QtIcB2Jgan1zn1DYD - Gattu

29

针对 Android Studio 3.0 的最新更新

gradle-wrapper.properties(文件名)中,将 distributionUrl 的 URL 更改为以下内容:

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


1
这是最好的答案。 - Prinkal Kumar
1
运行得非常好。只需要在jcenter()仓库中添加google()即可。 - Rohit Sharma
1
工作得很好,谢谢(y) - InsaneCat
完美的答案。谢谢。 - Shobhakar Tiwari

8

4
我快要自杀了,谢谢你救了我的命。 - Neon Warge
如果您使用2.3.1版本会怎样? - behelit
nvm --> classpath 'com.android.tools.build:gradle:3.0.0-alpha5' nvm --> classpath 'com.android.tools.build:gradle:3.0.0-alpha5' - behelit

5

好的,我搞定了。对于遇到同样问题的人,以下是我的解决方法:

  1. 进入你的外部 .gradle 文件夹(例如我的是 C:\Users\drilon.gradle)。在 caches 和 daemon 文件夹内删除所有版本文件夹(它们看起来像 "2.14.1" 或 "3.0")。然后进入 wrapper -> dists 并删除那里的所有文件。
  2. 进入你的项目根目录(例如我的是 C:\Users\drilon\AndroidStudioProjects\PorjectName)。然后进入 .gradle 文件夹并删除其中所有内容。
  3. 重新构建项目。

编辑:
结果发现,这个解决方法将 gradle 版本设置回了 2.14.1。ending0421 的解决方法是正确的。


这对我没有用。我必须使用LinuxArtisan提供的解决方案(升级到com.android.tools.build:gradle:2.2.0-beta1)。 - cbeaudin

3

最新版本的Android Studio 3.3.1已更新,以下代码可用。

1) 在gradle-wrapper.properties文件中添加以下行。

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

2) 在项目级别build.gradle中添加以下classpath

 dependencies
    {
        classpath 'com.android.tools.build:gradle:3.1.0'

    }

在添加了上述代码之后,Gradle同步代码将会像魔术般运行。 - Satyawan Hajare

1
如果您的Gradle版本是3.0.1,则在gradle-wrapper.properties中使用以下代码: distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip 如果是3.1.2,则在gradle-wrapper.properties中使用以下代码: distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip

1
    After 1 hour R&D No Solution as worked for me...

    But still i have solution follow this its work 100%

    step 1: upgrade your build.gradle(Project:<your project name>)
    Example :  classpath 'com.android.tools.build:gradle:2.1.3' // old gradle file
               classpath 'com.android.tools.build:gradle:2.3.1' // upgraded file 

                                OR
               classpath 'com.android.tools.build:gradle:3.1.0'

    Step 2 : Upgrade compileSdkVersion buildToolsVersion 
    Example : compileSdkVersion 23    buildToolsVersion "23.0.3 // old api's
              compileSdkVersion 25    buildToolsVersion "25.0.2" // upgraded api's

   Step 3:  upgrade gradle-wrapper.properties 
   Example : distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip // old or any version
            distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip // new or any version

第四步:最后转到build>rebuild project...

如果您仍然遇到问题,请提交或私信我....

...... 结束 @Ambilpura


1

在更新之前,您应该检查Gradle插件版本和Gradle版本

在项目级别的build.gradle文件中检查Gradle插件版本-

buildscript {
    
    repositories {
        google()

    }
    dependencies {
        classpath 'com.android.tools.build:gradle:gradle.plugin.version'
    }
}

检查您的gradle-wrapper.properties中Gradle版本 -

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

在回答时,以下是最新版本。您可以在此页面上匹配您的版本。

gradleversion


0

只需删除主项目文件夹中gradle文件夹内的所有内容并重新构建项目即可。它将开始工作。


0

简单的答案,请尝试以下方法...

前往 build.gradle(PROJECT)并检查如下所示的 gradle 版本

'com.android.tools.build:gradle:2.1.3' 或 3.0 或 3.1 或 xx.xx

现在打开 gradle-wrapper.properties,如果 gradle 版本是 2.x,则使用以下代码...

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

gradle-2.14.1-all.zip 的代码行必须与 gradle 版本相同

例如:

我的版本是 2.x,因此在 build.gradle 中的 classpath 'com.android.tools.build:gradle:2.1.3'。

distributionUrl=https://services.gradle.org/distributions/gradle-2.14.1-all.zip 在 gradle-wrapper.properties 中。

如果 gradle 版本为 3.x,则在 build.gradle 中的 classpath 'com.android.tools.build:gradle:3.1.0'。

distributionUrl=https://services.gradle.org/distributions/gradle-3.14.1-all.zip 在 gradle-wrapper.properties 中。

请检查一下,它会正常工作。


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