已有项目出现SSL Certificate Expired Exception导致Gradle构建失败求助
解决Gradle构建时的SSL Certificate Expired Exception(Fabric仓库证书过期)
从你贴出的错误日志里,一眼就能定位到问题核心:
Caused by: java.security.cert.CertificateExpiredException: NotAfter: Fri Jul 09 00:13:44 IST 2021
你项目依赖的https://maven.fabric.io/public仓库SSL证书早在2021年7月就过期了,Gradle没法建立安全的HTTPS连接拉取io.fabric.tools:gradle插件,直接导致构建失败。
根本解决方案:移除Fabric依赖并迁移到Firebase
Fabric早在2020年就被Google Firebase收购,官方早已停止对旧Fabric服务和仓库的维护,这才是问题的本质。正确做法是彻底移除Fabric相关配置,迁移到Firebase对应服务:
- 删除根目录
build.gradle中的Fabric插件依赖
找到类似代码并删除:
buildscript { dependencies { // 删掉这一行 classpath 'io.fabric.tools:gradle:1.+' } }
- 清理模块级
build.gradle的Fabric配置
- 删除插件应用语句:
apply plugin: 'io.fabric' - 删除所有Fabric相关依赖,比如:
implementation 'com.crashlytics.sdk.android:crashlytics:2.+'
- 迁移到Firebase Crashlytics(如果之前用Fabric做崩溃上报)
在根目录build.gradle添加Firebase插件依赖:
buildscript { dependencies { // 添加Firebase Crashlytics插件 classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.9' // 确保Google服务插件存在 classpath 'com.google.gms:google-services:4.3.15' } }
在模块级build.gradle应用插件并替换依赖:
plugins { id 'com.android.application' id 'com.google.gms.google-services' id 'com.google.firebase.crashlytics' } dependencies { implementation 'com.google.firebase:firebase-crashlytics:18.3.2' }
临时应急方案(仅测试场景使用,生产环境绝对禁用)
如果只是临时需要构建项目,不想立刻迁移,可以临时关闭该仓库的SSL验证(注意:这会引入安全风险,仅限测试):
在仓库配置中添加allowInsecureProtocol = true:
repositories { maven { url "https://maven.fabric.io/public" allowInsecureProtocol = true // 仅临时使用,别在生产环境开 } }
内容的提问来源于stack exchange,提问作者romil




