如何调试仅在发布模式下崩溃的 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,它们提供崩溃报告中的所有内容,甚至是您的应用崩溃的代码行号。用这个开心
在调试模式下一切正常,但在发布模式下崩溃。哪些在调试模式下可用但在发布模式下未打开的必需权限?
编辑
当我将链接设置为 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,它们提供崩溃报告中的所有内容,甚至是您的应用崩溃的代码行号。用这个开心