Android - 如何发送崩溃报告?

15

似乎从Android 2.2开始,有一项新功能可以发送崩溃报告,如链接所述:

我该如何使用这个功能?每个从市场(也称为Google Play Store)下载的应用程序都会自动使用它吗?在哪里可以找到更多关于这个功能的信息?
此外,是否可以通过使用DefaultExceptionHandler来自定义发送的内容,并放置我们自己的崩溃描述?
注意:我知道有很多发送崩溃报告的工具(例如ACRA),但我希望先检查一下是否可以使用已经提供的内容。
编辑:我成功修改了传递的异常,希望这也会改变发送到Google开发者网站的报告。
以下是与此相关的示例代码:
private static class DefaultExceptionHandler implements java.lang.Thread.UncaughtExceptionHandler
...
@Override
public void uncaughtException(Thread t, Throwable e)
{
  final StackTraceElement[] exceptionStackTrace = e.getStackTrace();
  Exception exception = new Exception("my new exception!", e);
  final StackTraceElement[] newExceptionStackTrace = new StackTraceElement[exceptionStackTrace.length + 1];
  System.arraycopy(exceptionStackTrace, 0, newExceptionStackTrace, 1, exceptionStackTrace.length);
  newExceptionStackTrace[0] = new StackTraceElement("TEST CLASS", "TEST METHOD", "TEST FILE", 0);
  exception.setStackTrace(newExceptionStackTrace);
_defaultUEH.uncaughtException(t, exception); //this will hopefully call the default handling of the exception for reporting
}

您将在Market控制台中自动收到错误报告。 - Sherif elKhatib
1个回答

5
您所描述的听起来像是内置功能,据我所知,您无法自定义此功能。数据将被发送到上传该应用程序的GooglePlay开发人员帐户中。我曾看到由Sense或Custom Roms进行的定制。获得自己的日志的唯一方法是使用您提到的DefaultErrorHandler。作为良好的实践,我建议您检查是否可以自行捕获错误(可能在某些地方记录)。如果不行,我会重新抛出此错误,以便用户有机会给您提示他所做的事情。

你不能在内置的崩溃报告中传递任何额外信息。你只能使用DefaultExHandler来发送你自己的报告,以你喜欢的方式。 - Rafael T
2
你没有理解我的意思(因为我承认是我的问题)。我想要添加额外的数据。例如,假设我得到了一个空指针异常,并且我想要包含在此异常发生之前打印的日志。我能否以某种方式添加此信息,以便在开发者网站上可以与收集的其他信息一起查看?也许我可以发送自己的自定义异常,其中包括这些数据? - android developer
如果我调用原始的DefaultErrorHandler方法来处理异常,但是发送我的自定义异常和信息,那么它不会起作用吗? - android developer
嗯,这就是我建议的:我会捕获原本应该被发送的异常,然后抛出自己的异常。这难道不是定制发送给崩溃报告的内容的一种解决方法吗? - android developer
对结果很好奇。最终会在报告中显示吗?@androiddeveloper - nuynait
显示剩余13条评论

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