Flutter项目接入Firebase Crashlytics后首次崩溃上报持续待处理
修复方案
1. 移除废弃Fabric依赖(核心问题)
当前你使用的Fabric相关配置早已被Firebase官方废弃,是导致上报失败的主要原因,按以下方式修改配置:
- 项目根目录
build.gradle修改后内容:
buildscript { repositories { google() mavenCentral() // 替换已废弃的jcenter } dependencies { classpath 'com.google.gms:google-services:4.3.14' // 升级到4.3.10以上版本 classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.2' // 新增官方Crashlytics插件,移除原有io.fabric.tools依赖 classpath 'com.android.tools.build:gradle:4.2.2' // 升级到兼容版本 } }
- app目录下
build.gradle修改后内容:
apply plugin: 'com.google.gms.google-services' apply plugin: 'com.google.firebase.crashlytics' // 移除原有的apply plugin: 'io.fabric'
pubspec.yaml指定明确的依赖版本,避免版本不兼容:
firebase_core: ^1.7.0 firebase_crashlytics: ^2.8.1 # 适配firebase_core 1.7.0的稳定版本 firebase_analytics: ^9.1.12
2. 修正崩溃测试逻辑
- 你编写的原生触发崩溃代码存在拼写错误,
RuntimeExeption应改为RuntimeException - Crashlytics的崩溃日志会在崩溃后首次重启应用时才会上报,触发崩溃后需完全退出应用,重新打开后等待3-5分钟即可在控制台看到数据
- 优先打release包测试,debug模式下默认会禁用部分上报逻辑,如需在debug模式下测试,可调整初始化代码:
WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); // 调试模式强制开启上报,正式发布时可根据构建类型动态配置 await FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true); FirebaseCrashlytics.instance.setUserIdentifier("51"); FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterError; // 延时触发崩溃,确保初始化流程完全完成 Future.delayed(const Duration(seconds: 2), () { FirebaseCrashlytics.instance.crash(); });
3. 网络适配检查
测试设备需可正常访问Firebase服务,避免上报请求被网络拦截。
内容的提问来源于stack exchange,提问作者HusseinDTS
相关产品推荐
相关产品推荐

