很长一段时间,AndroidStudio经常遇到这个报错:Cause: unable to find valid certification path to requested target。曾经以为很容易解决,从网上尝试了各种方法,均无效。趁着周末,再尝试一下解决这个问题。
一. 问题分析
首先,看一下报错的截图。翻译一下:找不到请求目标的有效证书路径。看上去像是证书的问题,这也是我以前搜索到的答案中普遍认为的问题。但是由于解决方法太繁琐,我也懒得尝试,通过代码啥的导入证书。
点开,查看详细的报错,看上去像是某个依赖库从阿里云的maven仓库无法下载:
点击链接,其实是可以下载的,如下图所示:
继续往后看,报了个异常:SSLHandshakeException,看上去确实是SSL的问题。
二. 问题解决
那么,接下来一步步地去尝试解决这个问题。首先,通过百度到的答案,尝试导入证书。这次搜到了一个简单的方式,不用写JAVA代码了。访问阿里云仓库,导出证书,然后在AS中导入:
重启后,sync项目,仍然报错,导入证书的方法对我无效。
然后,我在event log中偶然发现这个,AS用的是自带的Jre,而一直报的异常看上去像是jdk的问题,我在想是不是因为使用自带的JAVA环境导致的,如下图所示:
那我们试试换个JAVA,选择Select a JDK from the File System,选择电脑中的jdk,看看是否有效:
build中,不知道会不会解决。确实我是在尝试解决,因为这个问题我曾尝试过很多次,均没有解决。因此,这次也是抱着试试的想法:
build了一会后,还是报错。看上去,是找不到glide,但点击链接,还是可以访问,好像又回到了故事的原点(抓耳挠腮中......):
总是说阿里云访问不到,那我把阿里云仓库注释掉,还是使用google和jcenter,试一下:
好吧,又告诉我jecenter也不行,但实际上我还是可以在浏览器中下载(继续抓耳挠腮中......):
把阿里云仓库打开,再build一下,这次持续的时间有点久,看上去有希望。。等了43秒,真的成功了:
但我感觉没这么顺利,打个包看看能不能打出来:
好吧,好像真的成功了。那么,到底是怎么解决的呢,接下来,把解决问题的步骤总结一下:
(1)导入了阿里云仓库的证书,fail。
(2)更换AS编译使用的JAVA环境,fail。
(3)注释掉阿里云仓库,fail。
(4)打开阿里云仓库,success。
综上,排除3和4两个玄学因素。解决此问题的方法如下:(1)导入阿里云仓库的证书,当然也可以把google和jcenter的证书也加上。(2)更换AS编译使用的JAVA环境,不使用AS自带的,使用电脑中其他的jdk。当然,后面已经把编译用到的依赖库下载下来了,也不再去验证这两个方法哪个无效了,问题解决就好。