使用AndroidStudio 编译过程中,如果遇到失败的情况,可以:
1.把/gradle/wrapper/gradle-waipper.properties 中的distributionUrl 的地址改为http
2.从别的设备拷贝一份gradle文件:需要按照指定的路径拷贝(如C:\Users\lenovo\.gradle\wrapper\dists\gradle-5.4.1-all\3221gyojl5jsh0helicew7rwx),并且需要拷贝如下四个文件:
3.想法设法弄一份gradle-{version}-all.zip 或是gradle-{version}-bin.zip 文件 然后拷贝到本地路径,但是如何拷贝才能让系统认识,需要注意2点:
a.路径正确,不同版本的路径名不同,路径名的神奇文件夹名的确认下文详细解释
b.文件正确,四个文件,包含不起眼的*.lck 和 *.ok 文件,可以观察到0字节,但是是gradle 判断是否成功下载安装的标记
路径之中有一个神奇目录:3221gyojl5jsh0helicew7rwx,分析一下目录名是如何生成的
关于gradle 编译下载,其实是通过GradleW 自动完成下载的,在Android Studio Project 根目录下,存在两个文件:gradlew 和 gradlew.bat , 分别用户linux 和 windows 的gradle 下载等操作。
脚本中比较重要的两个变量:
可以看出,gradlew 是调用gradle-wrapper.jar 中的GradleWrapperMain 作为程序入口。
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jarexec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
反编译一下gradle-wrapper.jar ,一顿操作后定位到这段代码,代码时创建已某个字段做md5后的值为名的代码
可以产生两种猜测:以版本号做md5 ,或是以下载地址做md5
手撸一段验证一下,可以看到使用下载地址做md5后的结果和刚才本地目录的目录名吻合
网友评论