如果应用程序仅在发布模式下崩溃,如何调试错误

ale*_*kva 12 debugging build adb flutter

我最近将 Flutter 升级到 2.0.0,但遇到了这个问题。flutter run并且flutter run --profile工作得很好,但是flutter run --release使应用程序在启动后崩溃。没有堆栈跟踪,没有错误或警告,没有构建问题或详细警告,实际上没有提示。我用谷歌搜索了很多,但类似的问题得到了回答,例如“尝试删除此行”或“尝试添加该行”。我找不到任何关于如何调试错误的明确步骤。

我应该采取哪些步骤来调试此问题并找到根本原因,而不是尝试对代码进行无意义的更改,希望其中一些最终能够解决问题?

小智 9

使用adb logcat

或者

通过像这样修改android/app/build.gradle来在发布版本中启用调试

buildTypes {
    release {
        debuggable true
        shrinkResources false
        minifyEnabled false
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)


M12*_*123 3

当错误与代码相关而不是颤振本身时,哨兵应该提供帮助。

Sentry 的 Flutter SDK 支持自动报告错误、消息和异常。

您可以像导入任何其他包一样导入它

dependencies:
  sentry_flutter: ^4.0.6
Run Code Online (Sandbox Code Playgroud)

并尽早在您的应用程序中配置它

import 'package:flutter/widgets.dart';
import 'package:sentry_flutter/sentry_flutter.dart';

Future<void> main() async {
  await SentryFlutter.init(
    (options) => options.dsn = 'put_your_public_key_here',
    appRunner: () => runApp(MyApp()),
  );
}
Run Code Online (Sandbox Code Playgroud)

要获取你的公钥,你只需在sentry.io上注册并创建一个flutter项目,无需搜索你的密钥,它应该在示例代码中,它不会让你在没有初始化的情况下通过该点,这样你就可以不要错过它。有关 flutter 的文档可以在这里找到。