[+]
1.1 顶级目录
目录 | 功能 |
---|---|
caches | gradle缓存目录 |
daemon | daemon日志目录 |
native | gradle平台相关目录 |
wrapper | gradle-wrapper下载目录 |
1.2 caches目录
目录 | 功能 |
---|---|
2.14.1 | gradle程序的脚本(gradle程序版本) |
3.2.1 | gradle程序的脚本(gradle程序版本) |
jars-1 | ? |
jars-2 | ? |
modules-2 | 下载缓存目录 |
1.2.1 caches/modules-2目录
目录 | 功能 |
---|---|
files-2.1 | gradle下载的jar目录 |
metadata-2.16 | gradle-2.14.1的描述文件? |
metadata-2.23 | gradle-3.2.1的描述文件? |
files-2.1的目录组织
${org}/${package}/${version}/${shanum1}/${package-version}.pom
${org}/${package}/${version}/${shanum2}/${package-version}.jar
部分目录还有源码,忘记了。
- 1
- 2
- 3
例如:
https://jcenter.bintray.com/com/android/tools/lint/lint-api/25.1.3/lint-api-25.1.3.jar
对应的目录为
.gradle/caches/modules-2/files-2.1/com.android.tools.lint/lint-api/25.1.3/${shasum1}/lint-api-25.1.3.jar
~ find .gradle/caches/modules-2/files-2.1/com.android.tools.lint/lint-api/25.1.3/ -type f
.gradle/caches/modules-2/files-2.1/com.android.tools.lint/lint-api/25.1.3/14c6a94811fb8114a61b8f3ab29214f9466b5c59/lint-api-25.1.3.jar
.gradle/caches/modules-2/files-2.1/com.android.tools.lint/lint-api/25.1.3/c4844e26d84dd1f450f90d89d7e2d2d09f52760/lint-api-25.1.3.pom
~ shasum .gradle/caches/modules-2/files-2.1/com.android.tools.lint/lint-api/25.1.3/14c6a94811fb8114a61b8f3ab29214f9466b5c59/lint-api-25.1.3.jar
14c6a94811fb8114a61b8f3ab29214f9466b5c59 .gradle/caches/modules-2/files-2.1/com.android.tools.lint/lint-api/25.1.3/14c6a94811fb8114a61b8f3ab29214f9466b5c59/lint-api-25.1.3.jar
即目录名。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
1.3 daemon目录(无需离线)
用于存放gradle daemon的运行日志。按gradle程序版本存放。
目录 | 功能 |
---|---|
2.14.1 | gradle-2.14.1运行的日志 |
3.2.1 | gradle-3.2.1运行的日志 |
1.4 native目录(无需离线)
用于存放平台相关(Win/Linux/Mac)的库。
目录 | 功能 |
---|---|
19 | gradle-2.14.1对应的lib目录,按平台存放,如osx-amd64 |
21 | gradle-3.2.1对应的lib目录,按平台存放,如osx-amd64 |
jansi | ? |
1.5 wrapper目录
用于存放gradle-wrapper下载gradle的zip包和解压后的文件夹。
wrapper的目录规则是
wrapper/dists/gradle-2.14.1-all/base36/gradle-2.14.1-all.zip
wrapper/dists/gradle-2.14.1-all/base36/gradle-2.14.1-all.zip.lck
wrapper/dists/gradle-2.14.1-all/base36/gradle-2.14.1-all.zip.ok
其中base36的规则为:
- 从gradle/wrapper/gradle-wrapper.properties中得到distributionUrl,即https://services.gradle.org/distributions/gradle-2.14.1-all.zip,注意文件中的\不算。
- 对distributionUrl计算md5。例如printf “https://services.gradle.org/distributions/gradle-2.14.1-all.zip” | md5
得到8c9a3200746e2de49722587c1108fe87。 - 利用0x8c9a3200746e2de49722587c1108fe87构造一个uint 128位整数。
- 将整数利用base36得到base36的值(取小写)。
java代码如下:
import java.math.BigInteger;
import java.security.MessageDigest;
public class Hash {
public static void main(String[] args) {
try {
MessageDigest messageDigest = MessageDigest.getInstance("MD5");
byte[] bytes = args[0].getBytes();
messageDigest.update(bytes);
String str = new BigInteger(1, messageDigest.digest()).toString(36);
System.out.println(str);
} catch (Exception e) {
throw new RuntimeException("Could not hash input string.", e);
}
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
c++ java代码见http://github.com/xiaoyur347/gradlew/helper。