【问题标题】:How to debug what's wrong if app crashes only in release mode如果应用程序仅在发布模式下崩溃,如何调试问题所在
【发布时间】:2021-03-14 20:48:19
【问题描述】:

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

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

【问题讨论】:

  • 我遇到了类似的问题,这是因为一个包,所以你需要确保你使用的包没有任何额外的代码(例如在 android build.gradle 或 @987654325 @) 或者如果你必须实现它,那不是必须的,但它可能是。
  • 你试过flutter run --release -v吗?
  • 是的,但是在日志中没有发现任何有用的东西:/

标签: flutter debugging build adb


【解决方案1】:

使用adb logcat

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

buildTypes {
    release {
        debuggable true
        shrinkResources false
        minifyEnabled false
        ...
    }
}

【讨论】:

    【解决方案2】:

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

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

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

    dependencies:
      sentry_flutter: ^4.0.6
    

    并尽早在您的应用中进行配置

    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()),
      );
    }
    

    要获得您的公钥,您只需在sentry.io 上注册并创建一个颤振项目,无需搜索您的密钥,它应该在示例代码中,它不会让您在不初始化的情况下通过该点所以你不能错过它。 关于flutter的文档可以在here找到。

    【讨论】:

      【解决方案3】:

      您可以使用 Firebase Analytics 从 Firebase 查看已发布设备的错误日志。以前它被命名为 Fabric。

      或者您可以创建自己的日志跟踪器,将日志写入文件并将日志上传到您的服务器。

      您可以在“高级设置”或类似内容中为用户提供捕获日志并发送到服务器的选项。

      【讨论】:

        【解决方案4】:

        试试这个flutter run --release --no-shrink

        【讨论】:

        • Could not find an option named "no-shrink".
        • 在终端试试这个
        【解决方案5】:

        检查您是否在 AndroidManifest.xml 中为应用授予了正确的权限,在我的情况下,我只是通过授予相机权限来解决此问题

        <uses-permission android:name="android.permission.CAMERA" />
        

        标签前

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-08-19
          • 2011-01-21
          • 2020-04-04
          • 1970-01-01
          • 2018-03-22
          • 2019-09-11
          • 2012-08-20
          • 1970-01-01
          相关资源
          最近更新 更多