如何调试仅在发布模式下崩溃的 Android 应用程序

How do I debug an Android app that crashes only in Release Mode

在调试模式下一切正常,但在发布模式下崩溃。哪些在调试模式下可用但在发布模式下未打开的必需权限?

编辑

当我将链接设置为 None 时,我会通过第一个屏幕进入登录屏幕。但是,当我添加释放权限 Internet 时,它第一次尝试读取远程 Entity Framework 核心 Table 它崩溃了。

编辑 2

在发布模式下,如果我选中 Use Shared Runtime,应用程序运行正常。

编辑 3

我在发布模式下临时打开了调试。以下行仅在发布模式下抛出 System.TypeInitializationException:

if (_context.bma_users.Any(p => p.username == _name.Text) && _name.Text != string.Empty)

您已经假设 "permission",不确定为什么...

当我仅在发布模式下发生崩溃时,我禁用的第一件事是缩小(又名 ProGuard)。所以禁用混淆,重新构建并尝试查看是否仍然崩溃。如果没有,请一次一行重新启用 proguard 以查明原因。

如果您只想查看崩溃日志:

假设您有 Android Studio 并且没有实施崩溃报告服务(Firebase, Crashlytics,等等...)

您可能希望先查看崩溃日志打印

  • 在 Android Studio 中打开 Logcat
  • Log Level 更改为 Error
  • 确保 USB debugging 在您的设备上启用。
  • 将您的设备连接到计算机。
  • 使应用程序崩溃并查看它打印的内容。

如果您无法重现

下次崩溃时,连接设备并按照上述操作。通常可以查看日志历史记录,滚动直到找到崩溃 :)

寻找FATAL EXCEPTION

  • 请记住 - 使用 Logcat 搜索栏可以清除日志历史记录,在大多数情况下,您可以重新连接设备以再次查看。

答案是在 Project Properties 下的 Android Options 屏幕中将 Additional supported encodings 设置为 West。它似乎没有关系,但我尝试了所有可能的组合,这终于奏效了。

您只需为 release 构建类型设置 debuggable: true。 完成调试后,不要忘记删除此 属性。

您可以使用任何 crashlytics 工具,例如 Firebase Analytics、Fabric、Splunk Mint 来获取准确的崩溃日志

转到 android 部分的属性,然后进入 Android 选项选项卡。

确保 "Use Shared Runtime" 和 "Use Fast Deployment" 复选框在您的发布配置中未被勾选

将 FCM 和 fabric 用于 crashlatics,它们提供崩溃报告中的所有内容,甚至是您的应用崩溃的代码行号。用这个开心