【我的Android进阶之旅】Linux下学习.gradle目录组织结构以及修改Gradle缓存文件夹路径

一、背景描述

上一篇文章 【Jenkins学习 】解决Jenkins节点断开不可用,报错:Disk space is too low. Only 0.803GB left on /tmp. 里面说了,因为 / 根目录磁盘空间不足导致Jenkins编译节点服务器不可用。

【我的Android进阶之旅】Linux下学习.gradle目录组织结构以及修改Gradle缓存文件夹路径_第1张图片

查看下 / 根目录下面有哪些占用磁盘比较大的内容,如下所示:

[root@localhost /]#  du -h --max-depth=1 /
4.0K	/mnt
7.7M	/bin
0	/net
4.0K	/home
8.6G	/root
0	/selinux
343G	/data
291M	/glibc-build-2.14
41M	/lib64
4.0K	/media
0	/misc
232K	/dev
4.2G	/usr
155M	/lib
16K	/lost+found
3.5G	/opt
29M	/boot
39M	/etc
784K	/tmp
20M	/sbin
812M	/var
0	/cgroup
146M	/glibc-2.18
du: 无法访问"/proc/13912/task/13912/fd/4": 没有那个文件或目录
du: 无法访问"/proc/13912/task/13912/fdinfo/4": 没有那个文件或目录
du: 无法访问"/proc/13912/fd/4": 没有那个文件或目录
du: 无法访问"/proc/13912/fdinfo/4": 没有那个文件或目录
0	/proc
136M	/glibc-2.14
12K	/.dbus
4.0K	/srv
0	/sys
360G	/

【我的Android进阶之旅】Linux下学习.gradle目录组织结构以及修改Gradle缓存文件夹路径_第2张图片

看下 /root目录下有什么

[root@localhost /]# du -h --max-depth=1 /root
4.0K	/root/文档
4.0K	/root/视频
4.0K	/root/模板
144K	/root/.pulse
36K	/root/bin
8.0K	/root/.pki
4.0K	/root/.gvfs
48K	/root/.config
4.0K	/root/.nautilus
188K	/root/.cache
144K	/root/.local
384K	/root/.gstreamer-0.10
211M	/root/桌面
256K	/root/.m2
24K	/root/.repoconfig
32K	/root/.gnome2
8.0K	/root/.ssh
80K	/root/.gconfd
4.0K	/root/下载
4.0K	/root/.abrt
3.9G	/root/.android
16K	/root/.gnote
4.0K	/root/音乐
12K	/root/.dbus
284K	/root/.gconf
16K	/root/.gnupg
4.0K	/root/图片
40M	/root/.jenkins
4.0K	/root/公共的
4.5G	/root/.gradle
4.0K	/root/software
8.6G	/root
[root@localhost /]# 

【我的Android进阶之旅】Linux下学习.gradle目录组织结构以及修改Gradle缓存文件夹路径_第3张图片

二 .gradle目录

2.1 顶级目录

进入 /root/.gradle目录查看下,如下所示:
【我的Android进阶之旅】Linux下学习.gradle目录组织结构以及修改Gradle缓存文件夹路径_第4张图片

[root@localhost /]# cd /root/.gradle/
[root@localhost .gradle]# ll
总用量 16
drwxr-xr-x. 12 root root 4096 8月   1 19:37 caches
drwxr-xr-x.  7 root root 4096 7月   4 11:34 daemon
drwxr-xr-x.  6 root root 4096 4月  18 2018 native
drwxr-xr-x.  2 root root 4096 4月  18 2018 workers
[root@localhost .gradle]# 

分为caches 、daemon 、native 、wrapper 四个目录,如下所示:

目录 功能
caches gradle缓存目录
daemon daemon日志目录
native gradle平台相关目录
workers 未知,我这边是空目录

2.2 caches目录

下面来看一看 caches目录的情况,如下所示:

[root@localhost .gradle]# cd caches/
[root@localhost caches]# ll
总用量 40
drwxr-xr-x.  9 root root 4096 12月 14 2017 2.14.1
drwxr-xr-x.  6 root root 4096 5月  14 15:17 3.0
drwxr-xr-x.  6 root root 4096 4月  11 2018 3.3
drwxr-xr-x.  9 root root 4096 4月  18 2018 4.1
drwxr-xr-x.  8 root root 4096 7月   4 11:34 4.3
drwxr-xr-x. 10 root root 4096 8月   1 19:37 external-resources
drwxr-xr-x.  2 root root 4096 4月  11 2018 jars-2
drwxr-xr-x.  2 root root 4096 4月  18 2018 jars-3
drwxr-xr-x.  7 root root 4096 7月   4 11:34 modules-2
drwxr-xr-x.  4 root root 4096 4月  18 2018 transforms-1
[root@localhost caches]# 

【我的Android进阶之旅】Linux下学习.gradle目录组织结构以及修改Gradle缓存文件夹路径_第5张图片

目录 功能
2.14.1 gradle程序的脚本(gradle程序版本)
3.0 gradle程序的脚本(gradle程序版本)
3.3 gradle程序的脚本(gradle程序版本)
4.1 gradle程序的脚本(gradle程序版本)
4.3 gradle程序的脚本(gradle程序版本)
external-resources 未知
jars-2 未知
jars-3 未知
modules-2 下载缓存目录
transforms-1 好像是下载缓存目录

【我的Android进阶之旅】Linux下学习.gradle目录组织结构以及修改Gradle缓存文件夹路径_第6张图片

2.2.1 caches/modules-2目录

【我的Android进阶之旅】Linux下学习.gradle目录组织结构以及修改Gradle缓存文件夹路径_第7张图片

目录 功能
files-2.1 gradle下载的jar目录
metadata-2.16 gradle-2.14.1的描述文件 (不确定)
metadata-2.23 gradle-3.2.1的描述文件 (不确定)

files-2.1的目录组织

o r g / {org}/ org/{package}/ v e r s i o n / {version}/ version/{shanum1}/${package-version}.pom
o r g / {org}/ org/{package}/ v e r s i o n / {version}/ version/{shanum2}/${package-version}.jar
o r g / {org}/ org/{package}/ v e r s i o n / {version}/ version/{shanum2}/${package-version}.aar

例如: com.android.support:recyclerview-v7:27.1.1.aar对应的缓存为:

/root/.gradle/caches/modules-2/files-2.1/com.android.support/recyclerview-v7/27.1.1/3e9da1c78ef9fac192ff9e614b1c8e943cd9dd89/recyclerview-v7-27.1.1.aar

描述文件 recyclerview-v7-27.1.1.pom 对应着

/root/.gradle/caches/modules-2/files-2.1/com.android.support/recyclerview-v7/27.1.1/bf17224266bac78bb12fe4089fb1654eaa370af7/recyclerview-v7-27.1.1.pom

【我的Android进阶之旅】Linux下学习.gradle目录组织结构以及修改Gradle缓存文件夹路径_第8张图片

lint-gradle-api-26.0.1.jar 对应着:

/root/.gradle/caches/modules-2/files-2.1/com.android.tools.lint/lint-api/26.0.1/2d4dd9f4676fbb152e4baf6f6f4cbbb868521832/lint-api-26.0.1.jar

描述文件 lint-api-26.0.1.pom 对应着

/root/.gradle/caches/modules-2/files-2.1/com.android.tools.lint/lint-api/26.0.1/939c08ec1fd74659d4a47d849d0376e1b1b88988/lint-api-26.0.1.pom

【我的Android进阶之旅】Linux下学习.gradle目录组织结构以及修改Gradle缓存文件夹路径_第9张图片

2.3 daemon目录(无需离线)

用于存放gradle daemon的运行日志。按gradle程序版本存放。

[root@localhost .gradle]# cd daemon/
[root@localhost daemon]# ll
总用量 92
drwx------. 2 root root  4096 9月  18 14:18 2.14.1
drwx------. 2 root root  4096 5月  14 15:17 3.0
drwx------. 2 root root  4096 4月  11 2018 3.3
drwx------. 2 root root 73728 11月  7 14:40 4.1
drwx------. 2 root root  4096 9月  20 14:09 4.3

【我的Android进阶之旅】Linux下学习.gradle目录组织结构以及修改Gradle缓存文件夹路径_第10张图片

目录 功能
2.14.1 gradle-2.14.1运行的日志
3.0 gradle-3.0运行的日志
3.3 gradle-3.3运行的日志
4.1 gradle-4.1运行的日志
4.3 gradle-4.3运行的日志

【我的Android进阶之旅】Linux下学习.gradle目录组织结构以及修改Gradle缓存文件夹路径_第11张图片

2.4 native目录(无需离线)

用于存放平台相关(Win/Linux/Mac)的库。

[root@localhost 4.3]# cd ../../native/
[root@localhost native]# pwd
/root/.gradle/native
[root@localhost native]# ll
总用量 16
drwxr-xr-x. 3 root root 4096 12月 14 2017 19
drwxr-xr-x. 4 root root 4096 4月  11 2018 23
drwxr-xr-x. 4 root root 4096 4月  18 2018 25
drwxr-xr-x. 3 root root 4096 4月  11 2018 jansi
[root@localhost native]# 

【我的Android进阶之旅】Linux下学习.gradle目录组织结构以及修改Gradle缓存文件夹路径_第12张图片

目录 功能
19 gradle-2.14.1对应的lib目录,按平台存放,如osx-amd64
21 gradle-3.2.1对应的lib目录,按平台存放,如osx-amd64
jansi 未知,看目录也是存放一些so

【我的Android进阶之旅】Linux下学习.gradle目录组织结构以及修改Gradle缓存文件夹路径_第13张图片

【我的Android进阶之旅】Linux下学习.gradle目录组织结构以及修改Gradle缓存文件夹路径_第14张图片

[root@localhost 4.3]# cd ../../native/
[root@localhost native]# pwd
/root/.gradle/native
[root@localhost native]# ll
总用量 16
drwxr-xr-x. 3 root root 4096 12月 14 2017 19
drwxr-xr-x. 4 root root 4096 4月  11 2018 23
drwxr-xr-x. 4 root root 4096 4月  18 2018 25
drwxr-xr-x. 3 root root 4096 4月  11 2018 jansi
[root@localhost native]# cd 19/
[root@localhost 19]# ll
总用量 4
drwxr-xr-x. 2 root root 4096 12月 14 2017 linux-amd64
[root@localhost 19]# cd linux-amd64/
[root@localhost linux-amd64]# ll
总用量 56
-rw-r--r--. 1 root root 21873 12月 14 2017 libnative-platform-curses.so
-rw-r--r--. 1 root root     1 12月 14 2017 libnative-platform-curses.so.lock
-rw-r--r--. 1 root root 23965 12月 14 2017 libnative-platform.so
-rw-r--r--. 1 root root     1 12月 14 2017 libnative-platform.so.lock
[root@localhost linux-amd64]# 

[root@localhost linux-amd64]# cd ../../jansi/
[root@localhost jansi]# ll
总用量 4
drwxr-xr-x. 3 root root 4096 4月  11 2018 1.14
[root@localhost jansi]# cd 1.14/
[root@localhost 1.14]# ll
总用量 4
drwxr-xr-x. 2 root root 4096 4月  11 2018 linux64
[root@localhost 1.14]# cd linux64/
[root@localhost linux64]# ll
总用量 56
-rw-r--r--. 1 root root 54754 4月  11 2018 libjansi.so
[root@localhost linux64]# 


2.5 work目录

work目录的作用未知,这边看起来是空目录。

【我的Android进阶之旅】Linux下学习.gradle目录组织结构以及修改Gradle缓存文件夹路径_第15张图片

三、修改Gradle缓存文件夹路径

既然已经大概了解了.gradle目录的结构,而且/ 根目录磁盘已经不够用了,我们就需要将.gradle目录迁移到其他的地方去,修改Gradle缓存文件夹路径,以后缓存不要缓存到 / 根目录即可。

3.1 设置GRADLE_USER_HOME环境变量

新建一个环境变量设置,GRADLE_USER_HOME,然后写上值为你需要迁移的地方去。

在/etc/profile增加如下:

export GRADLE_USER_HOME=你想要迁移的地址

示例如下:
输入vi命令,编辑/etc/profile文件

[root@localhost workers]# vi /etc/profile

【我的Android进阶之旅】Linux下学习.gradle目录组织结构以及修改Gradle缓存文件夹路径_第16张图片

我们看到原来其他的SDK、gradle等目录也是在/根目录下,后面都移动到了/data目录下,因此我们将GRADLE_USER_HOME从原来的 ~/root/.gradle 也移动到 /data目录下,如下所示

添加 export GRADLE_USER_HOME=/data/opt/.gradle

【我的Android进阶之旅】Linux下学习.gradle目录组织结构以及修改Gradle缓存文件夹路径_第17张图片

[root@localhost .gradle]# vi /etc/profile
[root@localhost .gradle]# source /etc/profile

编辑完之后,使用 source /etc/profile 命令使修改生效。

【我的Android进阶之旅】Linux下学习.gradle目录组织结构以及修改Gradle缓存文件夹路径_第18张图片

修改完后,将原来的老目录删除即可。
【我的Android进阶之旅】Linux下学习.gradle目录组织结构以及修改Gradle缓存文件夹路径_第19张图片

这样 / 根目录 的可用磁盘空间就充裕了一些,这就是修改Gradle缓存文件夹路径的方法。


在这里插入图片描述

作者:欧阳鹏 欢迎转载,与人分享是进步的源泉!
转载请保留原文地址:https://blog.csdn.net/qq446282412/article/details/83821204
如果本文对您有所帮助,欢迎您扫码下图所示的支付宝和微信支付二维码对本文进行打赏。

【我的Android进阶之旅】Linux下学习.gradle目录组织结构以及修改Gradle缓存文件夹路径_第20张图片

你可能感兴趣的:(Android应用开发,我的Android进阶之旅)