Flutter集成Firebase Crashlytics后事件未在Dashboard显示
Firebase Crashlytics 数据不显示排查方案
核心问题定位
日志提示的Skipping logging Crashlytics event to Firebase, no Firebase Analytics是关键线索,但添加依赖后未解决,说明问题并非单纯依赖缺失,需从初始化逻辑、配置完整性、设备状态等维度逐一排查。
具体排查步骤
确认Analytics初始化顺序
Crashlytics依赖Analytics完成初始化,需确保FirebaseAnalytics.getInstance()在FirebaseCrashlytics.getInstance()之前调用,或在应用启动阶段同步初始化两者。示例代码(Application类的onCreate()方法中):// 优先初始化Analytics FirebaseAnalytics analytics = FirebaseAnalytics.getInstance(this); // 再初始化并启用Crashlytics FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance(); crashlytics.setCrashlyticsCollectionEnabled(true);验证Analytics是否正常工作
- 检查
google-services.json文件,确认firebase_analytics_enabled字段为true(默认开启,但可能被手动修改) - 手动发送测试事件验证Analytics上报能力:
若日志无analytics.logEvent("test_crash_trigger", null);Event logged相关输出,说明Firebase核心配置存在问题,需核对google-services.json的包名是否与项目一致,以及Firebase控制台中配置的SHA-1/SHA-256是否正确。
- 检查
启用Crashlytics调试模式强制上报
开启调试模式可跳过批量上报等待,立即发送崩溃数据,便于验证上报链路:FirebaseCrashlytics.getInstance().sendUnsentReports();触发崩溃并重启应用后,查看日志是否出现
Crashlytics report sent successfully的明确提示,而非仅“入队成功”。检查设备环境
确保测试设备系统时间与网络时间同步(时间偏差过大可能导致服务器拒绝数据),同时避免使用代理或VPN,部分网络环境会拦截Firebase的上报请求。排查依赖版本冲突
确保所有Firebase依赖版本统一,避免旧版依赖(如已被替代的firebase-core)导致初始化异常。示例gradle配置:ext { firebaseVersion = "29.0.0" } dependencies { implementation "com.google.firebase:firebase-crashlytics:$firebaseVersion" implementation "com.google.firebase:firebase-analytics:$firebaseVersion" }核对Firebase控制台配置
- 确认控制台中应用的包名与本地项目完全一致(包括大小写)
- 检查Crashlytics的「数据收集」开关是否开启(控制台>Crashlytics>设置>数据收集)
额外注意事项
- 测试崩溃后必须重启应用,Crashlytics仅在应用重启时上报崩溃数据,仅触发崩溃不重启无法完成上报
- 若使用ProGuard/R8,需添加以下混淆规则避免Crashlytics和Analytics类被混淆:
-keep class com.google.firebase.crashlytics.** { *; } -keep class com.google.firebase.analytics.** { *; }
内容的提问来源于stack exchange,提问作者nyphur
相关产品推荐
相关产品推荐

