在打开一个别人项目的时候,由于每个人使用的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 | Download https://services.gradle.org/distributions/gradle-4.4-all.zip (94.25 MB) |
从错误日志中可以看出,这是由于网络不稳定导致了下载中断,下载的Gradle版本包不完整而导致了无法解压文件。这时如果点击“Re-download dependencies and sync project (requires network)”进行重新尝试的话也并不能解决问题,又会出现如下提示:
1 | Failed to open zip file. |
原因应该是在路径下面已经存在了下载的Gradle包而运行的时候却无法解压导致的,需要手动的将不完整的Gradle包删除后再重新的尝试。
根据每个人电脑的不同,定位到.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目录下的子目录wrapper中的gradle-wrapper.properties文件从
1 | #Mon Mar 04 10:16:37 CST 2019 |
改为
1 | #Mon Mar 04 10:16:37 CST 2019 |
就是将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”。如下图所示:
这时候就大功告成了,重新点击“Re-download dependencies and sync project (requires network)”就能够正常运行了。
对于这类问题,博主不止一次遇到了,在这里记录一下并分享给遇到同样问题的开发者们。