「解决方案」Gradle’s dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)

  在打开一个别人项目的时候,由于每个人使用的Android Studio的版本都不一样,因此可能会从服务器去下载对应Gragle的版本,而这个时候常常会出现各种异常情况。如同本篇文章中所要讲述的下载Gradle版本失败的情况。在Android Studio中提示了Failed to open zip file.Gradle’s dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)。具体的错误日志如下:

1
2
3
4
5
6
7
8
9
Download https://services.gradle.org/distributions/gradle-4.4-all.zip (94.25 MB)
[ 75%] [ =========================================> ] 71.01 MB
Download https://services.gradle.org/distributions/gradle-4.4-all.zip succeeded, took 20 m 33 s 787 ms
Unzipping ...

Failed to open zip file.
Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)
Re-download dependencies and sync project (requires network)
Re-download dependencies and sync project (requires network)

  从错误日志中可以看出,这是由于网络不稳定导致了下载中断,下载的Gradle版本包不完整而导致了无法解压文件。这时如果点击“Re-download dependencies and sync project (requires network)”进行重新尝试的话也并不能解决问题,又会出现如下提示:

1
2
3
4
Failed to open zip file.
Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)
Re-download dependencies and sync project (requires network)
Re-download dependencies and sync project (requires network)

  原因应该是在路径下面已经存在了下载的Gradle包而运行的时候却无法解压导致的,需要手动的将不完整的Gradle包删除后再重新的尝试。

Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)

  根据每个人电脑的不同,定位到.gradle的文件夹下面。随后可以参考以下路径进行删除不完整的Gradle版本包。

1
C:\Users\KLAVOR\.gradle\wrapper\dists\gradle-4.4-all\9br9xq1tocpiv8o6njlyu5op1

  如下图所示,文件夹下包含了一个“gradle-4.4-all.zip”文件和一个“gradle-4.4-all.zip.lck”文件,然后如果将这两个文件删除后并点击Android Studio错误日志栏里面的“Re-download dependencies and sync project (requires network)”后,Android Studio将会重新下载这个版本的Gradle包。但是,由于网络原因可能还是会失败。

Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)

  这个时候有两种方式解决这个问题。

方法一:

  将项目中gradle目录下的子目录wrapper中的gradle-wrapper.properties文件从

1
2
3
4
5
6
#Mon Mar 04 10:16:37 CST 2019
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip

  改为

1
2
3
4
5
6
#Mon Mar 04 10:16:37 CST 2019
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=http\://services.gradle.org/distributions/gradle-4.4-all.zip

  就是将https改成了http,然后同步一下gradle就可以了。

方法二:

  和方法一类似,将失败的链接从https://services.gradle.org/distributions/gradle-4.4-all.zip改为http://services.gradle.org/distributions/gradle-4.4-all.zip后到浏览器地址栏里粘贴上去将这个文件下载下来。为什么要将https改成http呢?原因虽然不太清楚,但是改成http之后下载速度就变得极快了,个人猜测是https和http协议部署的服务器不一样又或者https校验根证书的时候证书提供商的地址被墙或者其他什么原因吧。

  下载完成之后将“gradle-4.4-all.zip”文件复制到“C:\Users\KLAVOR.gradle\wrapper\dists\gradle-4.4-all\9br9xq1tocpiv8o6njlyu5op1”(.gradle文件夹的路径根据个人电脑而定),并对zip压缩包进行解压,随后复制“gradle-4.4-all.zip.lck”文件(创建一个空白的新文件也可以)并将文件命名为“gradle-4.4-all.zip.ok”。如下图所示:

Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)

  这时候就大功告成了,重新点击“Re-download dependencies and sync project (requires network)”就能够正常运行了。

Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)

  对于这类问题,博主不止一次遇到了,在这里记录一下并分享给遇到同样问题的开发者们。