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

Flutter应用使用Crashlytics时能否获取Dart代码的错误位置

Flutter Crashlytics 无Dart层堆栈排查方案

核心原因说明

你当前测试使用的FirebaseCrashlytics.instance.crash()是原生层崩溃触发接口,本身就会直接终止原生进程,不会生成Dart侧调用堆栈,所以只会返回Java/ObjC层的栈信息,这是预期表现。如果要测试Dart异常捕获能力,需要主动抛出Dart侧异常,比如throw Exception("Test Dart crash");。

如果主动抛出Dart异常后还是看不到对应文件名和行号,一般是遗漏了如下配置:

1. 符号上传配置检查

Android端

  • 项目根目录android/build.gradle中添加Crashlytics Gradle插件依赖:
    dependencies {
      // 替换为最新稳定版即可
      classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.9'
    }
    
  • app级目录android/app/build.gradle顶部引入插件,同时开启符号上传:
    apply plugin: 'com.google.firebase.crashlytics'
    
    android {
      buildTypes {
        release {
          minifyEnabled true
          proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
          // 开启原生和Flutter符号上传
          firebaseCrashlytics {
            nativeSymbolUploadEnabled true
            uploadNativeSymbols true
          }
        }
      }
    }
    

iOS端

  • 打开Xcode项目,在构建阶段(Build Phases)添加新的运行脚本(Run Script),脚本内容填写:
    "${PODS_ROOT}/FirebaseCrashlytics/run"
    
  • 输入文件路径添加两项:
    • ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}
    • $(SRCROOT)/$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)

2. 全局异常捕获配置

Crashlytics默认不会自动捕获所有Dart层异常,需要在main函数中手动配置全局捕获逻辑:

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();

  // 捕获Dart同步异常
  FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterFatalError;
  // 捕获Dart异步异常
  PlatformDispatcher.instance.onError = (error, stack) {
    FirebaseCrashlytics.instance.recordError(error, stack, fatal: true);
    return true;
  };

  runApp(MyApp());
}

3. 打包测试注意事项

  • Debug模式下Crashlytics默认不上报崩溃,所有测试请在Release或Profile模式下进行
  • 如果打包时使用了--split-debug-info参数,需要手动将生成的符号文件上传到Firebase控制台,否则也会出现无法解析行号的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:45:03