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

c86crjj0  于 2022-11-14  发布在  其他
关注(0)|答案(6)|浏览(308)

我最近把Flutter升级到了2.0.0,但是这个问题一直困扰着我。flutter runflutter run --profile运行得很好,但是flutter run --release会让应用程序在启动后崩溃。没有堆栈跟踪,没有错误或警告,没有构建问题或详细警告,真的没有提示。我在谷歌上搜索了很多,但是类似的问题得到了回答,比如“尝试删除这一行”或“尝试添加那一行”。
我应该采取什么步骤来调试此问题并找到根本原因,而不是尝试对代码进行无意义的更改,希望其中一些最终会解决此问题?

bis0qfac

bis0qfac1#

使用adb logcat

在发布版本中启用调试,方法是修改您的android/app/build.gradle,如下所示

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

rbpvctlc2#

当错误与代码相关且不在flutter本身中时,sentry应提供帮助。
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项目,不需要搜索你的密钥,它应该在示例代码中,它不会让你在没有初始化的情况下通过那个点,所以你不会错过它。关于flutter的文档可以在here上找到。

cbeh67ev

cbeh67ev3#

您可以使用Firebase Analytics查看从Firebase发布的设备的错误日志。以前它被命名为Fabric。
或者,您可以创建自己的日志跟踪器,将日志写入文件并将日志上传到服务器。
您可以在“高级设置”或类似的设置中为用户提供捕获日志并发送到服务器的选项。

wvt8vs2t

wvt8vs2t4#

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

iq0todco

iq0todco5#

检查您是否在AndroidManifest.xml中为应用程序提供了正确的权限,在我的案例中,我只是通过提供摄像头权限来修复此问题

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

在标记之前

a64a0gku

a64a0gku6#

在我的情况下,经过两天的混乱,因为应用程序崩溃,只有在发布模式下没有任何错误的控制台,和错误显示在adb logcat不清楚(未知错误),之后我切换Flutter通道从stablemaster,运行后发布master channel错误开始显示为明确的消息,我解决了这些错误,然后崩溃问题解决。
所以我的步骤是:
1-通过在终端中运行以下命令,将Flutter通道切换至master

flutter channel master

2-在终端中运行upgrade命令:

flutter upgrade

3-以发布版本运行应用程序:

flutter run --release

4-观察控制台以查看错误...

相关问题