更新到3.0后,Gradle构建失败

问题描述 投票:66回答:11

我最近将我的项目的gradle版本从2.14.1更新到3.0。从那时起,每次出现此错误时,gradle构建都会失败:

错误:原因:org.gradle.api.internal.tasks.DefaultTaskInputs $ TaskInputUnionFileCollection无法强制转换为org.gradle.api.internal.file.collections.DefaultConfigurableFileCollection此意外错误的可能原因包括:

  • Gradle的依赖缓存可能已损坏(这有时会在网络连接超时后发生。)重新下载依赖项并同步项目(需要网络)
  • Gradle构建过程(守护程序)的状态可能已损坏。停止所有Gradle守护进程可以解决此问题。停止Gradle构建过程(需要重启)
  • 您的项目可能正在使用第三方插件,该插件与项目中的其他插件或项目请求的Gradle版本不兼容。
In the case of corrupt Gradle processes, you can also try closing the IDE and then killing all Java processes.

我搜索了谷歌并找到了一些解决方案,如this one,但没有任何工作。有谁知道如何修理它?

android android-studio gradle android-gradle
11个回答
79
投票

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

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

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

然后你可以运行gradle tasks,gradle将下载你需要的一切。

在2016年9月19日发布Android Studio 2.2之后,最新版本的构建工具为2.2.0。所以你可以修理它:

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

由于Android Studio 2.4 stable还没有准备好发布(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。 (我知道它不匹配问题Gradle build failing after update to 3.0,但我强烈建议你使用最新的构建工具谷歌推荐)

BTW:版本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

只需用jcenter()替换mavenCentral()

 repositories {
    jcenter()
    //mavenCentral()
}

0
投票

如果Android Studio Android Studio 3.0下面的代码工作。

gradle-wrapper.properties添加以下行。

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

如果Android Studio Android Studio 3.1.2下面的代码工作。

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

如果Android Studio 3.3.1下面的代码工作。

1)gradle-wrapper.properties添加以下行。

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

2)在项目级别的build.gradle添加如下

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

0
投票
    After 1 hour R&D Not 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

第4步:最后转到build> rebuild项目......

你仍然面临一些问题提交或收件箱我....

......结束@Ambilpura


25
投票

有关Android Studio 3.0的最新更新

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

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


8
投票

如果你使用gradle插件2.1.3,它很容易解决:

将您的gradle插件更新到2.2.0-beta1版

注意:这是测试版,也许你可以得到任何其他问题。

https://discuss.gradle.org/t/classcastexception-in-gradle-nightly-3-0-20160609/17979

快乐编码:)


4
投票

好的,我得到了它的工作。对于任何面临同样问题的人来说,它对我有用的方式如下:

  1. 转到外部.gradle文件夹(对我来说是C:\ Users \ drilon.gradle)。在内部缓存和守护程序文件夹中删除所有版本文件夹(它们看起来像“2.14.1”或“3.0”)。还可以去包装 - > dists - >删除那里的一切。
  2. 在项目根目录(对我来说是C:\ Users \ drilon \ AndroidStudioProjects \ PorjectName)中,转到.gradle文件夹并删除其中的所有内容。
  3. 重建项目

编辑: 原来这个解决方案是将gradle版本设置回2.14.1。 ending0421的解决方案是工作解决方案。


2
投票

如果您的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中使用下面的代码


0
投票

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


0
投票

如果你的gradle插件3.0.0 for studio version 3.0,请在gradle-wrapper.properties中添加它

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

0
投票

简单回答试试这个...

转到build.gradle(PROJECT)并检查gradle版本,如下所示

'com.android.tools.build:grad: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'所以

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

如果gradle版本是3.x然后在build.gradle中的classpath'com.android.tools.build:gradle:3.1.0'然后

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

检查一下它会起作用


0
投票

有关Android Studio 3.3.1下面代码工作的最新更新。

1)gradle-wrapper.properties添加以下行。

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

2)在项目级别的build.gradle添加下面的classpath

依赖{classpath'com.android.tools.build:grad:3.10'

}