如何从我的Android应用程序中获得崩溃数据(至少堆栈跟踪)?至少在我自己的设备上工作时可以通过电缆检索,但理想的情况是,从我的应用程序在野外运行的任何实例中都可以,这样我就可以改进它,使它更可靠。


当前回答

虽然本页上的许多答案都很有用,但它们很容易过时。AppBrain网站汇总统计数据,让您找到当前最流行的崩溃报告解决方案:

Android崩溃报告库

你可以看到,在发布这张图片时,5.24%的应用使用了Crashlytics,安装率为12.38%。

其他回答

如果你想立即得到答案,你可以使用logcat

$adb shell logcat -f /sdcard/logoutput.txt *:E

如果您的日志中现在有太多垃圾,请先尝试清除它们。

$adb shell logcat -c

然后尝试运行您的应用程序,然后再次logcat。

我是Bugsnag的创始人之一,我们正是为此目的而设计的。Bugsnag自动捕获Android应用程序中未处理的异常,并将它们发送到我们的仪表板,在那里您可以优先修复并深入诊断信息。

以下是在选择或构建崩溃报告系统时需要考虑的一些重要事项,以及一些代码片段:

自动检测未处理的异常(示例代码) 收集诊断数据,如内存使用情况、设备信息等(示例代码) 根据根本原因有效地将崩溃组合在一起 允许您跟踪用户在每次崩溃前采取的操作,以帮助重现(示例代码)

如果你想在Android上看到一些关于崩溃处理/报告的最佳实践,你可以查看Bugsnag的崩溃报告库的完整源代码,它是完全开源的,可以自由地把它拆开,并在你自己的应用程序中使用!

现在Firebase崩溃报告非常流行,也更容易使用。 详情请参考以下连结: Firebase崩溃报告

希望对你有所帮助。

对于另一个崩溃报告/异常跟踪服务检查Raygun。io -它有一堆很好的逻辑处理Android崩溃,包括体面的用户体验时,将其插入到你的应用程序(两行代码在你的主活动和几行XML粘贴到AndroidManifest)。

当你的应用程序崩溃时,它会自动抓取堆栈跟踪,硬件/软件的环境数据,用户跟踪信息,任何你指定的自定义数据等。它异步地将其提交给API,这样就不会阻塞UI线程,如果没有可用的网络,它会将其缓存到磁盘。

免责声明:我构建了Android提供商:)

你可以直接在Android Studio中做到这一点。只要连接你的手机,运行应用程序,让它崩溃,你就可以直接在Android Studio中查看堆栈跟踪。