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

5

在Debug模式下一切正常,但在Release模式下崩溃。在Debug模式中可用的所需权限在Release模式下未开启,请问这些权限是什么?

编辑

当我将链接设置为None时,可以通过第一个屏幕到达登录屏幕。但是,当我添加了发布权限Internet后,它在尝试读取远程Entity Framework Core Table的第一次时会崩溃。

编辑2

在Release模式下,如果我勾选Use Shared Runtime,应用程序就可以正常运行。

编辑3

我已经临时在Release模式下开启了调试。以下行仅在Release模式下引发System.TypeInitializationException异常:

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

2
使用 appcenter.ms 启用崩溃报告。 - Jason
1
除了像Jason所说的使用AppCenter报告“远程”应用程序崩溃之外,对于“本地”测试,请查看设备的logcat输出以获取崩溃详细信息:https://learn.microsoft.com/en-us/xamarin/android/deploy-test/debugging/android-debug-log?tabs=vswin - SushiHangover
链接设置为None @MohammadOmidvar。 - Randy
为什么不使用Fabric的Crashlytics呢?每次出现崩溃时,您都不需要插入手机。 - Pablo Rodriguez
看起来你的库只在调试模式下工作。你有检查过库列表吗? - Milad Yarmohammadi
显示剩余3条评论
7个回答

11

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

假设您已经安装了Android Studio,但没有实现崩溃报告服务(如FirebaseCrashlytics等)。

您可能想先查看崩溃日志记录:

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

如果您无法重现问题:

下次它崩溃时,请连接设备并执行与上述相同的操作。通常,日志历史记录将可供查看,请向下滚动直到找到崩溃位置 :)

寻找FATAL EXCEPTION

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

3
虽然你可能会找到崩溃的原因,但这并不是关于如何在发布模式下进行调试的答案。 - Dennis Schröer

5
你已经默认了“权限”,不确定原因...
当我发现某些东西只在发布模式下崩溃时,我要禁用的第一件事是缩小(即ProGuard)。所以禁用混淆,重新构建并尝试查看是否仍然会崩溃。如果没有,逐行重新启用proguard以确定原因。

ProGuard未启用。 - Randy

1
答案是在项目属性下的Android选项屏幕中将附加支持编码设置为West。这似乎与问题无关,但我尝试了所有可能的组合,最终成功了。

2
老实说,你在干嘛? - Farid

1
您可以在release构建类型中设置debuggable: true。调试完成后,请不要忘记删除此属性。

我和OP有同样的问题,当我设置debuggable: true时,它不再崩溃,但我不能将其发布到应用商店...! - undefined

0

前往 Android 部分的属性,然后进入 Android 选项卡。

确保在发布配置中未选中“使用共享运行时”和“使用快速部署”框。

Properties page


-1

您可以使用任何一个崩溃分析工具,如Firebase Analytics、Fabric、Splunk Mint等,以获取精确的崩溃日志


-1
请检查Crashlytics,他们会提到您的应用程序崩溃的确切行号。您可以看到显示的错误,然后进行修复。

其他答案中提到的建议,再次(再次...)并没有回答问题。 - Gert Arnold

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接