在使用Android Studio或者从2.1版本升级到2.3版本的时候,常常会出现gradle project refresh failed这种情况,这时我的第一反应就是搞事情啊,这是在搞事情啊。吃饭的工具用不了这是要让我喝西北风啊?脑子里突然浮现一个画面,在项目组的群里,老大前一天晚上说:“明天早上在会议室开会,大家带上吃饭的家伙。”我心想:“这大早上就要给我们发福利?”于是乎,在第二天早上我就拿着一副碗筷,拎着两瓶啤酒乐呵呵的走进了会议室,看到大家都带着电脑在开会,我心里无数个C N M飘过啊。瞬间一万点暴击,K.O了,当时看见我们老大的脸都绿了。哎~~~
下面接着上边的话题聊一下,遇到gradle project refresh failed的情况,我就打开了百度页面,心想:“这不算什么的,万能的百度都能帮我搞定的,毕竟这种坑肯定我不是一个踩到的。”果然当我在搜索栏输入这个错误点击回车后,下面出现了很多的解决方式,我高兴的点开一个就照着上边的解决方案操作起来,等了一会(公司电脑配置不行,gradle要好一会),我擦gradle project refresh failed。没事没事,我安慰着自己,也许这次姿势不对,我又找了一个方法照着操作,还是gradle project refresh failed。就这样连续操作几个方法之后,我觉得这不是姿势的问题了,这是五行不和啊。
突然想起来一个好哥们说的一句话,遇到问题不能抱着试一试的心态去解决,需要知道问题为什么出现,之后再去考虑一下出现问题可能的解决方式,之后分析最靠谱的解决方式(直中要害)。这时我扔下手中的鼠标和键盘,坐在那盯着屏幕想:“gradle的依赖方式有两种,一种是Maven,另一种是compile依赖。不管是哪种依赖方式,Android Studio公开的或者说托管的三方库(也就是说在项目中compile 'com.squareup.retrofit2:retrofit:2.2.0'这句代码是要去Maven Center或者Jcenter文件服务器中去下载库文件以实现本项目依赖这个库),我一想创建项目的时候要去文件服务器上下载库文件,那是不是这里出现的问题呢?又关联想到了在不久前公司设置了代理服务器(屏蔽了好多个网站,有些人可能会说直接把代理关了就行了啊,可以说这个办法在我们公司是行不通的,因为代理取消了那你百度的资格都没有了)。”于是乎我就想了一个办法,既然设置了代理就不能从文件服务器上下载到库文件导致编译失败,那好吧,那我下载下来所需库文件之后放到Android Studio的缓存库中(就在C:\Users\{你的用户名}\.gradle\caches\modules-2\files-2.1)就应该可以了,我就借了一个笔记本过来连接了公司的另一个网络(公司两个网络一个是设置了代理的,一个是直接访问外网的,有人又会问你不是说不能直接访问外网吗?对的我是不能直接访问外网的,只有公司的领导才可以,我是借了他的笔记本电脑使用他的凭证才能上网的),之后我疯狂地从文件服务器上下载着库文件,高兴地讲下载下来的库文件放在缓存库中,重启Android Studio,看着它在构建,蹦的从下边弹出构建结果还是gradle project refresh failed。
即使这样我还是继续分析解决这种问题的解决方式:“既然是因为不能从文件服务器上下载所需库文件,那索性直面问题不要借助其他的方式解决会不会好很多呢?”于是我就找到Android Studio是可以设置代理的Settings--Appearance & Behavior--Systems Settings--Http Proxy中默认选择的是No Proxy,往下来就看到了Manual proxy configuration(手动设置代理)选择Http,在下边填写Host name和Port number(这些信息要根据公司的代理去选择和设置),这时我又乐呵呵的点击了确定之后赶紧重新构建一下,噗噗噗还是gradle project refresh failed。之前没有设置代理的时候出现这个问题可以理解,现在代理我也设置了,为何还会是这种情况呢?我继续找~找~找找啊找啊找朋友,找到一个好朋友,敬个礼啊,握握手,你是我的好朋友。突然我想到为什么笔记本可以直接访问外网呢?认证(有账号和密码 这个可以和老大去要),于是乎我就再次打开了Settings--Appearance & Behavior--Systems Settings--Http Proxy,选择了Proxy authentication并且填写上账号和密码,之后保存设置重新构建,没有报错居然成功了。
曾经,有一个可以不入坑的方式放在我面前,我没有去珍惜,如果上天再给我一次机会的话,我愿对它说九个字:“别T M D让我入坑了”。
下面也介绍一下通过这次踩坑的经历所了解到的填坑的方式:
不同的情况会有不同的解决方法,需要打开日志文件找到详细错误信息。
C:\Users\{Username}\.AndroidStudio2.1\system\log
1. 强制IPV4
在环境变量中增加变量
_JAVA_OPTIONS
设置变量值为,
-Djava.net.preferIPv4Stack=true
重启Android Studio,自动更新gradle。
2.更新JDK1.7到JDK1.8
File->Other Settings->Default Project Structure...
3.删除.gradle文件
删除文件夹
c:\users\{username}\.gradle
然后重启Android Studiao,更新gradle。
4.修改gradle.properties配置
打开工程的gradle.properties文件,添加如下配置项:
org.gradle.jvmargs=-Xmx512m -XX:MaxPermSize=512m
这个是解决虚拟内存不够引起的问题。
5.设置正确的gradle版本
File->Settings
Build,Execution,Deployment->Build Tools->Gradle
这是解决gradle版本不匹配的问题。
6. 手动同步gradle
Tools->Android->Sync Project with Gradle Files
7. 清理工程
Build->Clean Project
8. Invalidate and Restart
File->Invalidate Caches/Restart...
Invalidate and Restart
9. 更新android sdk
对于没有下载相应版本SDK的问题,按要求下载即可。
10. 更改工程目录下build.grade文件
有时还会是这个问题Gradle '【project_name】' project refresh failed: No cached version of com.android.tools.build:gradle:2.10.+ available for offline mode.
遇到这种情况就打开工程目录下的build.gradle文件,之后更改
dependencies{
classpath'com.android.tools.build:gradle:2.10+'
}
打开 C:\Users\{你的用户名}\.gradle\caches 文件,发现下面没有2.10目录,正常情况下,在重启Studio时,如果没有会重新去下载该文件目录。如果不能正常下载,去copy一份放在该目录下,就可以啦。
这只是我遇到问题的解决方式,可能你遇到的问题和我的一样,希望这篇blog能帮助到你。