You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中使用Crashlytics发送报告时出现SSLHandshakeException问题

解决Crashlytics发送报告时的SSLHandshakeException问题

这个问题我之前帮不少开发者排查过,结合你给出的日志来看,核心是应用没法验证Crashlytics服务器的SSL证书,导致崩溃报告发不出去。给你几个针对性的解决方向,按优先级来试:

首先先明确日志里的错误核心:

D/CrashlyticsCore: 尝试发送4份报告
E/CrashlyticsCore: 发送报告com.crashlytics.android.core.SessionReport@e6586d3时出错
io.fabric.sdk.android.services.network.HttpRequest$HttpRequestException: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: 未找到证书路径的信任锚点。
at io.fabric.sdk.android.services.network.HttpRequest.part(HttpRequest.java:2546)
at io.fabric.sdk.android.services.network.HttpRequest.par...


  • 优先迁移到Firebase Crashlytics(最关键)
    你日志里出现的io.fabric.sdk.android是旧版Fabric框架的Crashlytics,而Fabric服务早在2020年就停止维护了,对应的服务器证书大概率已经失效,这几乎是这类问题的最常见原因。建议直接迁移到Firebase整合的Crashlytics:

    1. 项目级build.gradle添加依赖:
      dependencies {
        classpath 'com.google.gms:google-services:4.4.1'
        classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.9'
      }
      
    2. App级build.gradle替换插件和依赖:
      apply plugin: 'com.google.gms.google-services'
      apply plugin: 'com.google.firebase.crashlytics'
      
      dependencies {
        // 移除旧的Fabric Crashlytics依赖
        // implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1'
        // 添加Firebase Crashlytics
        implementation 'com.google.firebase:firebase-crashlytics:18.6.2'
        implementation 'com.google.firebase:firebase-analytics:21.3.0'
      }
      

    迁移完成后重新打包测试,基本能解决证书信任问题。

  • 处理企业网络/自定义CA证书场景
    如果你的应用是在企业内网环境下运行,网络中存在自定义CA证书拦截SSL连接,需要让应用信任这些证书:

    1. 在res/xml目录创建network_security_config.xml:
      <?xml version="1.0" encoding="utf-8"?>
      <network-security-config>
          <base-config cleartextTrafficPermitted="false">
              <trust-anchors>
                  <!-- 信任系统默认证书 -->
                  <certificates src="system" />
                  <!-- 信任用户安装的企业CA证书 -->
                  <certificates src="user" />
              </trust-anchors>
          </base-config>
      </network-security-config>
      
    2. 在AndroidManifest.xml的<application>标签中配置:
      <application
          ...
          android:networkSecurityConfig="@xml/network_security_config">
          ...
      </application>
      
  • 排除网络代理/VPN干扰
    临时关闭设备上的代理工具或VPN,切换到普通移动数据或公共Wi-Fi测试。有些代理会替换SSL证书,导致应用无法验证Crashlytics的原始证书,从而触发信任锚点错误。

  • 检查设备系统时间
    这个细节很容易被忽略:如果设备的系统时间和实际时间偏差过大(比如差几个月),SSL证书的有效期验证会失败,也会抛出这个错误。确保设备时间设置为自动同步状态。

内容的提问来源于stack exchange,提问作者Piotr Temp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:39:40