Android插件打包JAR遇PKIX路径构建失败问题求助
Android插件打包JAR时PKIX证书路径错误的原因与解决方案
错误原因
- 该错误属于Java SSL证书信任问题:打包过程中Gradle需要从远程Maven仓库下载依赖,但本地JDK的信任库(
cacerts)未包含对应仓库的SSL证书,导致无法建立安全的HTTPS连接。 - 网络环境限制:处于代理、防火墙或内网环境时,SSL证书可能被拦截、篡改,导致JDK无法验证证书的有效性。
解决方案
1. 手动导入仓库证书到JDK信任库(推荐生产环境使用)
- 导出证书:用浏览器打开依赖仓库的HTTPS地址(如
https://repo.maven.apache.org),点击地址栏的锁形图标,导出证书为Base64编码的.crt文件。 - 定位信任库:找到本地JDK的
cacerts文件,默认路径为JDK安装目录/jre/lib/security/cacerts(JRE环境则为JRE安装目录/lib/security/cacerts)。 - 执行导入命令:打开终端,运行以下keytool命令(默认密码为
changeit):
输入keytool -import -alias maven_repo_cert -keystore "你的cacerts文件绝对路径" -file "导出的.crt文件路径"yes确认信任该证书即可。
2. 临时跳过SSL证书验证(仅测试场景使用)
在项目根目录的build.gradle中添加配置,强制Gradle忽略SSL验证:
allprojects { repositories { mavenCentral() // 其他仓库配置 } } // 全局SSL信任配置 gradle.startParameter.systemProperties['javax.net.ssl.trustStore'] = '你的cacerts文件绝对路径' gradle.startParameter.systemProperties['javax.net.ssl.trustStorePassword'] = 'changeit'
或在gradle.properties中添加:
systemProp.javax.net.ssl.trustStore=你的cacerts文件绝对路径 systemProp.javax.net.ssl.trustStorePassword=changeit
3. 排查网络环境
- 关闭代理后重新执行打包,确认是否是代理拦截证书导致的问题。
- 若处于公司内网,联系IT部门确认仓库地址的访问权限,或获取内网信任的证书导入JDK信任库。
4. 更新JDK版本
旧版本JDK的信任库可能缺少部分新根证书,升级到JDK 11及以上版本,通常可解决多数证书信任问题。
内容的提问来源于stack exchange,提问作者XaMi
相关产品推荐
相关产品推荐

