【发布时间】:2020-09-16 12:32:55
【问题描述】:
我已经在我的统一游戏中实施了 firebase crashlytics 来接收崩溃报告,并且它正在工作一半燃料。它报告了一些崩溃,但由于某种原因,它没有报告所有崩溃。我收到很多用户报告在游戏的同一部分崩溃,但我无法重现问题或在 crashlytics 报告中找到它。
为了接收所有的崩溃,我还能做些什么吗?
【问题讨论】:
标签: firebase unity3d crashlytics
我已经在我的统一游戏中实施了 firebase crashlytics 来接收崩溃报告,并且它正在工作一半燃料。它报告了一些崩溃,但由于某种原因,它没有报告所有崩溃。我收到很多用户报告在游戏的同一部分崩溃,但我无法重现问题或在 crashlytics 报告中找到它。
为了接收所有的崩溃,我还能做些什么吗?
【问题讨论】:
标签: firebase unity3d crashlytics
Crashlytics 将跟踪两种类型的崩溃:致命和非致命。在大多数情况下,iOS 和 Android 上的崩溃是致命的崩溃(整个应用程序/游戏崩溃并且用户正在查看手机的主屏幕)。在 Unity 上,Crashlytics 实际上注册了一个 LogCallback 并报告未捕获的异常。通常,这些不会使您的游戏完全崩溃,但仍表示不良和崩溃的行为。我已经写了一个twopart 系列关于那里不同的崩溃情况。
所以第一个(简单的)答案是确保您显示“非致命”崩溃。
第二个答案有点困难。本机代码中可能会发生崩溃可能(我通常会强制堆栈溢出来模拟这种情况或在内存不足的情况下运行 Unity,但我最近看到开发人员使用了 ForceCrash 调用)。报道的方式有点棘手,部分原因是C++ is not officially supported by Crashlytics。
根据我的经验,这些往往显示为致命的崩溃,但标记不充分。在 iOS 上,它们看起来是象征性的,但往往会选择堆栈帧的错误部分来显示。在 Android 上,我倾向于只看到一个非符号化的崩溃报告(看起来可以通过 ndk-stack 运行)。
如果您在查看非致命崩溃时没有看到您的崩溃,请尝试仅查看致命崩溃并查看您是否看到任何看起来像原始崩溃日志的内容。从技术上讲,Crashlytics 可以在 iOS 和 Android 上表示原生符号,团队是 aware that there are issues。如果这代表了您的经验,我建议您在 GitHub 或 Firebase Support 上提交问题,以查看您的设置是否存在问题,或者这是需要跟踪的另一个用例。
【讨论】: