分享

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

 郭恩 2018-09-05

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

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

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

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

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


更改gradle的缓存目录

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

GRADLE_USER_HOME
  • 1

这个就是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
  • 1

而这个网址下载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中了,小伙伴们可以轻松愉悦的下载了。 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多