Flutter Firebase Crashlytics 将堆栈跟踪报告为 Java 类文件而不是 Dart 文件

Shi*_*dam 5 dart firebase crashlytics flutter

我在我们的应用程序中集成了 Flutter Crashlytics,但它在 Java 类文件中而不是在 Dart 文件中报告崩溃堆栈跟踪。因此,很难推断出 flutter 代码库中发生此问题的文件和行号是什么。

以下是来自 Firebase Crashltytics 的未捕获异常的此类崩溃报告的示例:

Non-fatal Exception: java.lang.Exception: NoSuchMethodError: The method 'markNeedsBuild' was called on null.
Receiver: null
Tried calling: markNeedsBuild()
       at State.setState(State.java:1168)
       at _ArgonButtonState.initState.<fn>(initState.java:107)
       at AnimationLocalStatusListenersMixin.notifyStatusListeners(AnimationLocalStatusListenersMixin.java:193)
       at AnimationController._checkStatusChanged(AnimationController.java:773)
       at AnimationController._tick(AnimationController.java:789)
       at Ticker._tick(Ticker.java:237)
       at SchedulerBinding._invokeFrameCallback(SchedulerBinding.java:1102)
       at SchedulerBinding.handleBeginFrame.<fn>(handleBeginFrame.java:1017)
       at SchedulerBinding.handleBeginFrame(SchedulerBinding.java:1015)
       at SchedulerBinding._handleBeginFrame(SchedulerBinding.java:949)
Run Code Online (Sandbox Code Playgroud)

以下是 Crashlytics 的初始化方式:

// Pass all uncaught errors from the framework to Crashlytics.
FlutterError.onError = Crashlytics.instance.recordFlutterError;

runZoned(() {
    runApp(AppMain(homeWidget));
  }, onError: Crashlytics.instance.recordError);
Run Code Online (Sandbox Code Playgroud)

我报告捕获的异常如下:

Crashlytics.instance.recordError(error, stack);
Run Code Online (Sandbox Code Playgroud)

如何配置 Crashlytics 以在 dart 中报告堆栈跟踪?Crashlytics 是否会为 Dart 源代码显示错误的文件名和行号?

小智 6

来自 Crashlytics 的托德。这是一种已知行为,我们正在研究可能的选择。Kotlin 用户会看到类似的行为。

  • 我希望这个问题能尽快得到解决。我总是最终编写额外的服务来记录崩溃/错误。 (2认同)