无法向Firebase Storage上传文件,报SSL握手错误如何解决
问题根因
从日志可以看出问题和存储规则无关,核心是两个异常:
- SSL握手失败,TLS版本不匹配,通常由网络环境篡改、SDK版本过低导致
- 缺少App Check token,若项目开启了App Check强制验证会直接拦截请求
解决方案
- 优先排查本地网络:关闭所有VPN、代理、HTTP抓包工具,测试网络是否可以正常访问谷歌服务。如果用模拟器测试,可切换到真机或者重启模拟器后重试,模拟器网络代理配置异常是该类SSL报错的高频原因。
- 调整App Check配置:登录Firebase控制台进入「App Check」页面,查看Storage的强制验证是否开启。如果不需要使用App Check能力,直接关闭强制验证即可;如果需要使用,在Android端集成App Check SDK配置,生成合法token随请求发送即可。
- 升级Firebase SDK版本:项目中使用的Firebase Storage SDK版本过旧会导致默认TLS版本不满足服务端要求,建议升级到最新稳定版的Firebase BOM依赖,统一所有Firebase相关组件的版本。
- 适配低版本系统TLS配置:如果App兼容Android 5.0以下系统,需要手动启用TLS 1.2支持,在Application的
onCreate方法中添加如下配置:
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT) { try { val sslContext = SSLContext.getInstance("TLSv1.2") sslContext.init(null, null, null) SSLContext.setDefault(sslContext) } catch (e: Exception) { e.printStackTrace() } }
- 验证文件有效性:添加日志确认
selectedImage对应的Uri真实有效,可先替换为本地固定的测试图片路径上传,排除文件本身损坏、权限不足导致的上传失败。
内容的提问来源于stack exchange,提问作者user17470743
相关产品推荐
相关产品推荐

