Android Studio卡在refreshing gradle project的原因和快速解决办法

这个问题遇到过很多次,网上也有很多解决办法,但是好像都没有发现refreshing gradle project在做什么。

可以再试试

./gradlew --info


看看详细信息:

iceMacBook:Test ice$ ./gradlew --info
Exception in thread "main" java.lang.RuntimeException: Timeout of 120000 reached waiting for exclusive access to file: /Users/ice/.gradle/wrapper/dists/gradle-3.3-all/55gk2rcmfc6p2dg9u9ohc3hw9/gradle-3.3-all.zip
        at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:61)
        at org.gradle.wrapper.Install.createDist(Install.java:48)
        at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:128)
        at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)


一般refreshing gradle project出现在打开一个新工程或者升级Android Studio之后,为什么需要refreshing呢?问题就出在gradle-wrapper.properties这个文件上,这个文件指明了本工程需要用的gradle版本。


而一个gradle包的大小一般在70M以上,开了VPN需要半个小时以上才能缓存下来,不开的话基本会卡死在那里,下载不了。知道问题就好解决了,首先打开你的gradle缓存目录(如果你没修改过的话目录就在下面的路径).

windows: C:\Users\用户名\.gradle\wrapper\dists
OSX: /Users/用户名/.gradle/wrapper/dists

首先我们先去gradle仓库手动下载好一个版本(可以是工程需要的版本,你也修改gradle-wrapper.properties中的版本号为gradle缓存目录已有的版本,这样就不用下载了),最好用迅雷下载更快。 

假设我们需要gradle-3.4-all。 

查看dists目录,发现Android Studio已经生成了这个目录。

1.png

后面这串字符很重要,是refreshing gradle project时自动生成的目录,我们下载好的gradle文件也要放在这个目录。


如图所示,把zip包(可能需要改名)和解压后的目录放在上面这串字符串的目录中。强制关闭Android Studio,重启后就不会停留在refreshing gradle project了。

有时候会卡在compile/debugCompile也是因为这个原因,也可能是因为根目录下的build.gradle文件的问题,如图所示:



这里写图片描述


图中的classpath表示的gradle工具版本在本地没有的话也会下载,导致卡住。 

这个编译工具的在osx系统中的路径为/Users/jady/.gradle/caches/modules-2/files-2.1/com.android.tools.build/gradle,windows中找对应的用户目录,如图所示:


这里写图片描述


AndroidStudio自带有一个,要看自带是哪个版本,Windows可以新建一个工程看这个文件,osx可以在/Applications/Android Studio.app/Contents/gradle/m2repository/com/ 

android/tools/build/gradle里面看。 

可以在jceter仓库手动下载。 

所以打开一个项目之前一定要看下build.gradle文件和gradle-wrapper.properties文件,修改成已有的或自带的。 


参考:http://blog.csdn.net/u013005791/article/details/60143750


声明:本站所有文章和图片,如无特殊说明,均为原创发布。商业转载请联系作者获得授权,非商业转载请注明出处。
真诚赞赏,手留余香
赞赏
随机推荐
Land 主题
JavaScript 的历史
MySQL 批量插入数据时如何解决重复问题
WordPress 常用接口
Node.js 控制台进度条实现原理
WordPress 分页
什么是 RESTful API 的幂等性
冒泡法排序