引言
相信大家在用Android Studio的时候,肯定一次又一次的因为我们生在局域网内而苦恼不已。作为没有买VPN的孩子,我们更新Android的基本组件和sdk的时候,可以用伟大的镜像来解决,但是更新gradle的时候就坑爹了。今天我就遇到了这个问题,以下是本人的心路历程,没有兴趣的朋友可以直接看解决方案。
心路历程
公司开始新一轮迭代,顺应时代的潮流,用了新版本的gradle。我满心欢喜的pull下新的代码准备开始干活,build了一下项目,给我出了下面这个报错信息:
Error:Connection timed out: connect. If you are behind an HTTP proxy, please configure the proxy settings either in IDE or Gradle
这是什么鬼东西,连接超时,我设置了代理??并没有啊,后来想了想,估计是把我们的天朝局域网当成代理了...
好吧,出现问题,就解决问题。网络不畅,我又没有VPN,怎么办呢?上网baidu google(这里用的是lantern)查了一下,好像给出的解决方案里,好像直接下载对应版本的gradle到本地这个方法比较靠谱。下载好了gradle(在CSDN下载的,感谢分享 ),根据教程把gradle文件复制到.gradle文件夹里(一般情况下路径是 C:/Users/用户名/.gradle),然后教程说重启Android Studio就行。我万分期待的重启了Android Studio,然而。。还是下载,还是失败,好像什么都没有发生过...
我继续查资料,发现刚刚被坑了,应该是把下载好的文件放在 C:/Users/用户名/.gradle/wrapper/dists这个文件夹下,嗯,这回应该错不了了,重启.... 然而还是什么都没有发生,Android Studio还是很任性的在下载新版本gradle,还是很倔强的问你:“是不是设代理了,我没法下载啊兄弟,赶紧改掉!”
这次我没有再去网上查,我觉得我这个遇到问题啊,国外的答案不符合国情,国内的答案都是抄来抄去,根本解决不了问题。我打开C:/Users/用户名/.gradle/wrapper/dists这个路径,发现我下载的和这里本来有的文件命名都不一样,比如我下载的文件是gradle-2.14.1, 而这个文件夹里的文件名都是gradle-2.14.1-all 这种风格的。 打开gradle-2.14.1-all,里面有一个8bnwg5hd3w55iofp58khbp6yv文件夹,再点开里面就是四个文件 gradle-2.14.1(文件夹) gradle-2.14.1-all.zip(压缩包)gradle-2.14.1-all.zip.lck 和gradle-2.14.1-all.zip.ok。我懂了,我下载好的gradle文件应该放在这里!
于是乎我又满心欢喜的将我下载好的gradle-2.8放到了gradle-2.8-all --> ah86jmo43de9lfa8xg9ux3c4h 文件夹下面,我观察到之前这个文件夹下面有两个文件 gradle-2.8-all.zip.lck 和 gradle-2.8-all.zip.part,这个应该是还没下完的烂尾工程,删掉,只留我自己下的gradle-2.8,这个时候应该没问题了吧,我又一次重启了Android Studio,进度条不紧不慢的走着,这次还是在下载,还是没成功,一切的一切都是无用的,我差点就砸键盘了!你要新版本,我给你新版本了,你还要我怎样?你还要我怎样??
绝望的我去接了一杯水,我要冷静一下。我又打开了C:/Users/用户名/.gradle/wrapper/dists,里面有很多版本的gradle,我都点开看了一遍,有些是下载成功的,有些是下载烂尾的。看着看着我发现问题了!成功的文件里面都是四个文件,里面包含了一个0KB大小的gradle-xxx-all.zip.ok
,OK文件?难道是告诉Android Studio这个版本下载OK的意思?为了保险,我把压缩包
gradle-2.8-all.zip 和 gradle-2.8-all.zip.lck (这个文件也是0KB)复制到了gradle-2.8-all --> ah86jmo43de9lfa8xg9ux3c4h文件夹里,还加了一个gradle-2.8-all.ok文件。重启,来吧英雄~ 奇迹果然出现了,项目编译成功!这个ok文件果然就是判断是否已经下载的关键,此处应该有雷鸣般的掌声~~
解决方案
接下来整理一下解决方案。
1.Android Studio项目中会有一个文件:项目名称\gradle\wrapper\gradle-wrapper.properties
,里面的distribution链接中会带有版本,这个就是启动Android Studio之后会自动更新的版本,比如:
distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
所以当遇到更新失败,大家就需要先在网上下载对应版本的gradle文件,以下就用gradle-2.14.1版本举例说明。
2.当Android Studio下载过gradle-2.14.1-all之后(不管成功失败),就会在C:/Users/用户名/.gradle/wrapper/dists中出现gradle-2.14.1-all文件夹,打开之后是一串以无规律字符命名的文件夹,我的是8bnwg5hd3w55iofp58khbp6yv,这个可能因人而异。打开之后就是真正的gradle文件。
3.当gradle-2.14.1-all下载失败后,8bnwg5hd3w55iofp58khbp6yv文件夹里的文件是两个,gradle-2.14.1-all.zip.lck和gradle-2.14.1-all.zip.part。
4.(关键步骤)将自己下载好的gradle-2.14.1-all.zip压缩包和解压后的gradle-2.14.1文件夹复制到gradle-2.14.1-all --->8bnwg5hd3w55iofp58khbp6yv文件夹下,将gradle-2.14.1-all.zip.part文件删除,复制一份gradle-2.14.1-all.zip.lck文件,重命名为gradle-2.14.1-all.zip.ok。
5.这个时候,当前文件夹里应该有四个文件gradle-2.14.1(文件夹)、gradle-2.14.1-all.zip(压缩包)、gradle-2.14.1-all.zip.lck(lck文件)、gradle-2.14.1-all.zip.ok(ok文件),好了,大功告成,重启你的Android Studio!