升级Android studio后, 构建项目时一直报错显示:
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Unable to find valid certification path to requested target
这是由于 你所使用的网络提供商、或你组织的网络部门 不信任、屏蔽了某个下载URL的根证书,使得你下不了东西。
A. 小试设置
于是我猜,可能是因为引用了http导致的报错,找了一下build.gradle,
allprojects {
repositories {
jcenter() { url "https://maven.aliyun.com/repository/jcenter" }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' }
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' }
maven { url "https://jitpack.io" }
mavenCentral()
mavenLocal()
}
}
用的旧版阿里云仓库地址,有些是http的。但也不太对,如果是http证书的问题,应该不会连累https呀。所以问题原因一定还是出在AS设置身上
于是广搜AS settings,于是找到了这条:
在Android studio中找到File->Tools->Server Certificates,将自动接收不受信任的证书即可
先在Build->clean project,清理一下项目
然后到File->Invalidate Caches清空缓存重启AS,但是仍然报错
B. 修改云镜像
如果通过修改镜像云的方式可以奏效吗?
1. 如果重启AS后,仍然出现此问题,建议使用阿里云镜像将build.gradle内的buildscript和allprojects都替换为阿里云镜像:
maven { url 'https://www.jitpack.io' }
maven { url 'https://maven.aliyun.com/repository/public' }
maven { url 'https://maven.aliyun.com/repository/central' }
maven { url 'https://maven.aliyun.com/repository/jcenter' }
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
2. 如果上面方法仍然不奏效,建议clean project或手动删除项目的build文件
3. 切换一个网络再试
以上步骤均不成功
C. 添加证书
如果按部就班,通过下载对应证书可以奏效吗?
1. 按证书下载配置
STEP 1:jcenter() 实际地址是: Service End for Bintray, JCenter, GoCenter, and ChartCenter | JFrog,复制到浏览器访问它,点击(Chorme)地址栏最左边有一个小按钮:
选择“证书” -> “详细信息” -> “保存到文件”
STEP 2: Android Studio中,菜单栏 File ->Setting ->Tools->Server Certificates 点击 Accept certificates 附近的"+" 选择并上传你的证书,File-> Invalidate Caches/Restart 重启AS之后再同步一下试试看。
配置后发现根本没有用
D. 冷门偏方
如果通过冷门偏方,删除去掉一些东西可以奏效吗?
1. 删除.gradle,使其重新下载;不成功
2. 修改gradle-wrapper.properties, 使其变为本地引用或内网服务器引用;不成功
E. 修改配置数据
如果修改build.gradle的配置方式:
所有统一改成这个样式 jcenter() { url "http://jcenter.bintray.com" }
最终解决方案
问题起因是:你所使用的网络提供商、或你组织的网络部门 不信任、屏蔽了某个下载URL的根证书
那么问题一定是跟你的网络有关。经过再次比对处理发现,是因为我们公司网络安全做了一系列操作把我们自己给防住了。
解决方案那么就显而易见了:
1. 自己开手机热点给电脑使用,绕过公司的网络检查机制。下载完缓存后再连回公司网络
2. 如果公司内网有相应的maven库可供下载,则优先使用公司内网推荐地址