Android Studio更改Gradle缓存目录所引发的各种奇葩问题

gradle cache文件过大的纠结

AS运用gradle构建app项目,其中必然会缓存各种文件,如编译的各类class,依赖的各种jar包,那这个缓存文件放在哪里呢?
默认位置:

C:\Users(用户)\username\.gradle

不调整缓存目录也没多大关系,前提是你的C盘容量够大,因为这个缓存文件是随着时间的推移而逐渐增大的。
C盘是一个系统盘,我认为C盘就应该只用以放置操作系统;还有另一点是AS更新时下载的临时文件都放在这里

C:\Users(用户)\username\AppData\Local\Temp 

强迫症的我经常手贱去点了update sdk,经常就是2、3G,结果下载到一半的时候告诉我磁盘空间不足,这简直让我无法忍受,一咬牙决定把缓存文件移到其它磁盘,况且下载缓存目录也无法更改。
未转移之前,我的.gradle文件夹大小如下图,惊人的达到了1G。
这里写图片描述


更改gradle的缓存目录

在每个工程中都有这么一个文件夹目录gradle,点开其中的gradle-wrapper.properties
这里写图片描述
可以看到右边中第一行等号右边的大写常量

GRADLE_USER_HOME

这个就是gradle缓存的目录,配置与Java一样,新建一个环境变量,名字为GRADLE_USER_HOME,值就为其它盘中gradle要放置的文件目录,它会在这个目录下自动生成.gradle文件夹(如不存在)。
这里写图片描述
从下图中可以看到选择use defualt gradle用的环境变量设置的目录,这是推荐选项,还有第二个选择就是自己指定gradle放置的目录。
这里写图片描述

当完成了gradle缓存目录的设置后,我将C盘中的.gradle文件直接复制到了新的缓存目录中,然后引发了后续各种奇葩问题.


项目无法编译,build error

当更改缓存目录后,编译项目时AS报了如下的错误

Error:Unable to load class
'asLocalRepo601_3r3vayyz997q7cxsbexzcx3f1$_run_closure1$_closure2$_closure4$_closure5'.
Possible causes for this unexpected error include:

In the case of corrupt Gradle processes, you can also try closing the IDE and then killing all Java processes.

从英文的意思上看,是说Gradle的依赖库或者守护进程被损坏了,我clean然后rebuild过项目,依然报这个错误,没办法只能上stackoverflow,解决方法就是简单粗暴的删除.gradle这个文件夹,然后让AS重新构建项目,重新下载依赖库

之前也陆陆续续报过构建时的错误-init scripts-remapped error,也是asLocalRepoxxx这样的class发生错误,但是这个init的错误在重试三次后就会消失,实在让人烦躁。

这一次是项目无法正常运行了,使出杀手锏-直接剪切.gradle备份起来,然后重启AS.


Refreshing….界面卡住的尴尬

移除.gradle文件夹后,然后重启AS开始重建之路,看着进度条好像有点慢,将之放入background,过了10分钟再看,依然还是refreshing,再过了10分钟,依然还是refreshing…..
这里写图片描述
这到底是出了什么毛病,一直卡在这个界面中…
百度之,发现这个引起这个问题的根源竟然是网速不够,见这篇博客
简引言之,项目构建的第一件事就是要找到gradle这个project工具文件夹,选择默认配置是要连网下载的。网址是

distributionUrl=https\://services.gradle.org/distributions/gradle-3.4-all.zip

而这个网址下载gradle到底有多慢呢,访问网站下载速度大概需要3个小时才能下载完这个87.3M的文件。

这里写图片描述

我又Ping了一下,发送丢包率竟然为50%
这里写图片描述

所以说在这种龟速上,怪不得一直卡在这个界面上,最基础的构建工具都要下个老半天,真是心累。

幸好我机智了备份了之前配置好的gradle3.4-all的zip,将之复制到下图目录中,项目可以正常的往下构建,不会一直卡过refreshing这个界面中。
这里写图片描述
那一大长串是自动生成的,不用管它。

题外话:为什么我选择的是3.4版本的gradle呢,这是因为我的gradle插件是2.3.3版本的(com.android.tools.build:gradle:2.3.3),这个版本只能支持3.3+版本的gradle,各个插件对应的gradle版本号如下表所示。

Plugin versionRequired Gradle version
1.0.0 - 1.1.32.2.1 - 2.3
1.2.0 - 1.3.12.2.1 - 2.9
1.5.02.2.1 - 2.13
2.0.0 - 2.1.22.10 - 2.13
2.1.3 - 2.2.32.14.1+
2.3.0+3.3+

故打开别人项目之前一定要看下顶级build.gradle文件中的build tools version 和wrapper.properties文件中的gradle版本,手动改成已有的版本号,不然就会陷入Refreshing的循环中。
这里安利一个下载链接,这位神人没有上传文件大小的限制,将现所有的gradle版本都上传至了csdn download中了,小伙伴们可以轻松愉悦的下载了。
CSDN各版本下载传送门。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值