前言
这篇文章所有的方法全都是在stackoverflow上找到的,我也是最近强迫自己使用英语搜索,才发现stackoverflow的好处。以前虽然看一些大牛说stackoverflow是开发者圣,但是我基本都是用中文作为关键词搜索,虽然同样是在Google上搜索,但是找到的内容不可相提并论。越来越后悔以前没有好好学英语了,只能慢慢补了。
设置gradle代理
在 USER_HOME/.gradle/中新建一个gradle.properties,然后输入以下内容
1 | 127.0.0.1 = |
解决https证书错误
设置好代理之后,可能出现htpps代理失败的问题。因为jc库默认是https的,我用的免费代理软件,需要导入自签证书才能使用。然而我安装官方教程使用keytool向java导入了CA证书,还是无法使用。一般会显示如下的错误
1 | "Error:(26, 13) Failed to resolve: com.alibaba:fastjson:1.1.34.android" |
去代理软件后台看到其报错
1 | Aug 10 16:59:59.618 - [INFO] ssl error: [SSL: SSLV3_ALERT_CERTIFICATE_UNKNOWN] sslv3 alert certificate unknown (_ssl.c:590),create full domain cert for host:jcenter.bintray.com |
就是因为软件不能信任我们自己的证书,所以导致https通讯失败。而解决办法就是将jcenter仓库地址替换为http。即将build.gradle中的
1 | repositories { |
全部替换为(应该有两个,一个是app的,一个是module的)
1 | repositories { |
永久替换jcenter()
按照上述方法,就成功的设置了代理。但是缺点是需要每次新建项目后都修改一下仓库地址,尤其是初学Android时,基本上每个示例都要新建一个项目,难不成每个都改一遍么?当然不可能,自然有替换方法,将下面的内容,保存为init.gradle,和gradle.properties一样,也放到USER_HOME/.gradle/中。
1 | allprojects{ |
重新打开Android Studio并进行同步gradle,你会发现一切都正常了。
init.gradle是Gradle的初始化脚本(Initialization Scripts),会再每次gradle运行时执行,即上述代码是在gradle运行时修改jcenter仓库链接而不会去修改build.gradle文件里的内容。