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

来源:互联网 发布:淘宝申请退款时间5天 编辑:程序博客网 时间:2024/05/16 09:49

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:

  • Gradle’s dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)
    Re-download dependencies and sync project (requires network)
  • The state of a Gradle build process (daemon) may be corrupt. Stopping all Gradle daemons may solve this problem.
    Stop Gradle build processes (requires restart)
  • Your project may be using a third-party plugin which is not compatible with the other plugins in the project or the version of Gradle requested by the project.
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 version Required Gradle version 1.0.0 - 1.1.3 2.2.1 - 2.3 1.2.0 - 1.3.1 2.2.1 - 2.9 1.5.0 2.2.1 - 2.13 2.0.0 - 2.1.2 2.10 - 2.13 2.1.3 - 2.2.3 2.14.1+ 2.3.0+ 3.3+

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

阅读全文
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 一个月宝宝睡眠不好怎么办 个人怎么办一清pos机 社保到退休年龄未交满15年怎么办 退休时社保没交满15时怎么办 单位不支付病假工资怎么办 一年级学生上课注意力不集中怎么办 一年级学生的理解能力差怎么办 一年级学生学习太差怎么办 宝宝屁眼破皮怎么办啊 九个月婴儿不爱喝奶怎么办 十一个月婴儿发烧怎么办 四个月宝宝睡不踏实怎么办 5个月宝宝瘦了怎么办 宝宝只吃迷糊奶怎么办 宝宝五个月了不吃奶粉怎么办 1岁婴儿入睡困难怎么办 怀孕五个月胎儿肾积水怎么办 15个月宝宝总喊怎么办 学业水平考试有d怎么办 买了水果碰见领导怎么办 高一孩子不愿意上学怎么办 专家解答 孩子不愿意上学怎么办 冬天脚冷怎么办膝盖疼 拉拉裤大了怎么办小妙招 孕37周翻身困难怎么办 晚上睡不好白天犯困怎么办 抑郁症又不想起床了怎么办 儿童憋尿功能太差怎么办 一个月的宝宝睡眠不好怎么办 被商场要求撤场怎么办 上班没法接孩子放学怎么办 幼儿下午放学与上班错开怎么办 宝宝早上醒的早怎么办 晚卜睡不着尿多怎么办 要求正常休息公司不准怎么办 我早起被室友说怎么办? 小孩晚上睡的晚怎么办 初中一年级学不扎实怎么办 一年级学生上课爱说话怎么办 孩子不按时完成作业怎么办 高三理科基础不好怎么办