Android端Firebase Crashlytics报告无法入队DataTransport 上报失败
Firebase Crashlytics 18.2.11 崩溃报告无法上报修复方案
问题根因
该故障与Firebase集成配置无关,是Crashlytics 18.2.11传递依赖的com.google.android.datatransport:transport-runtime库存在已知缺陷:
- Android 7.0(API 24)及更低版本系统对Log标签长度有严格限制,最大长度为23个字符
- 存在缺陷的DataTransport版本使用的日志标签
TRuntime.SQLiteEventStore长度超出系统限制,调用Log.isLoggable时直接抛出IllegalArgumentException,导致崩溃报告无法进入DataTransport上报队列 - 从日志可见Crashlytics自动采集开启、连接器连接、异常处理器配置、会话创建全流程正常,仅在报告入队DataTransport阶段报错,与该缺陷特征完全匹配
修复方案
选择以下任意一种方案即可修复:
- 固定Crashlytics版本的场景:在应用级Gradle配置中强制指定修复了该缺陷的DataTransport版本,覆盖默认传递依赖的旧版本
Groovy语法(build.gradle)配置如下:
Kotlin DSL语法(configurations.all { resolutionStrategy { force 'com.google.android.datatransport:transport-runtime:3.1.9' force 'com.google.android.datatransport:transport-backend-cct:3.1.9' } }build.gradle.kts)配置如下:configurations.all { resolutionStrategy { force("com.google.android.datatransport:transport-runtime:3.1.9") force("com.google.android.datatransport:transport-backend-cct:3.1.9") } } - 允许升级依赖的场景:直接将Firebase Crashlytics升级到最新正式版,新版本默认依赖修复了该缺陷的DataTransport库,无需额外配置强制版本
验证方法
- 完成配置修改后同步Gradle,重新编译安装应用
- 手动触发一次测试崩溃,重新打开应用等待1-2分钟
- 回到Firebase控制台即可看到上报的崩溃记录,无需额外调整初始化逻辑或开关配置
注意:测试崩溃时不要将应用连接在Debug模式下,Debug模式下Crashlytics会默认拦截崩溃不上报,触发崩溃后需要手动重启应用才会触发上报逻辑。
内容的提问来源于stack exchange,提问作者Omar Bernardi
相关产品推荐
相关产品推荐

