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


当前回答

我在这里做了我自己的版本: http://androidblogger.blogspot.com/2009/12/how-to-improve-your-application-crash.html

这基本上是相同的事情,但我使用邮件而不是http连接来发送报告,更重要的是,我添加了一些信息,如应用程序版本,操作系统版本,手机型号,或可用内存到我的报告…

其他回答

这是非常野蛮的,但是可以在任何地方运行logcat,所以一个快速而肮脏的hack是在任何捕获块中添加getRuntime()。Exec ("logcat >> /sdcard/logcat.log");

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

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

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

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

使用这个来捕获异常细节:

String stackTrace = Log.getStackTraceString(exception); 

保存在数据库中,并维护日志。

谷歌改变了你实际得到的崩溃报告的数量。以前你只能得到手动报告的错误报告。

自从上次开发者大会和Android Vitals的引入,你也会从用户那里得到崩溃报告,这些用户已经启用了共享诊断数据。

您将看到从用户选择自动共享使用情况和诊断数据的Android设备收集的所有崩溃。可获得前两个月的数据。

查看崩溃和应用程序未响应(ANR)错误

有一个叫做fabric的工具,这是一个崩溃分析工具,它可以让你在应用程序实时部署和开发期间获得崩溃报告。 将这个工具添加到您的应用程序也很简单。 当应用程序崩溃时,可以从fabric查看崩溃报告。IO仪表盘。THW报告被自动捕获。它不会询问用户的权限。他/她是否想要发送错误/崩溃报告。 这是完全免费的… https://get.fabric.io/