Android开发者控制台上的崩溃和ANR问题

31

我最近在Google Play商店上发布了一个应用程序,我正在探索开发者控制台,并看到了Crashes and ANR标签。

ANR代表什么?

此外,我的应用程序似乎在一些朋友的手机上崩溃过,但他们无法“报告”这些崩溃。 我应该如何启用此类功能,让用户可以向我报告崩溃,以便我可以在Crashes / ANR标签下在开发者控制台中查看?


3
应用程序未响应,您希望“等待”还是“关闭应用程序”? - Shark
1
ANR是指应用程序无响应。如果应用程序在UI线程上执行大量工作,则会出现这些错误。 - Gautham
2个回答

42

ANR代表应用程序未响应。如果您的应用程序在UI线程上执行大量工作,则会看到其中一个强制关闭/等待对话框。这就是ANR。

至于崩溃报告,如果您的应用程序通过Google Play分发,则内置了崩溃报告功能。当您的应用程序崩溃时,用户将收到一个带有“强制关闭”或“报告”选项的对话框。用户必须按报告选项才能向您发送崩溃报告,否则您可能永远不会知道。

如果您没有通过Google Play分发,请考虑使用像ACRA这样的库,它可以向您发送崩溃报告电子邮件,将其上传到Google Docs电子表格中,或编写自己的自定义处理程序以处理崩溃报告。

有关ACRA的详细信息,请访问此处:http://code.google.com/p/acra/

下面是这些对话框的示例。左侧是关闭/报告对话框,右侧是ANR。 Android 3.0+位于顶部,旧的对话框位于底部。

enter image description here


1
嗯,这很奇怪,因为在我朋友的手机上似乎只显示"<应用名称>已停止",他只能点击“确定”。 - lyk
我已经有一段时间没有应用程序崩溃了,所以我不能确定现在它的样子,但这个功能是在Android 2.2中引入的,过去看起来像这样:http://android-developers.blogspot.com/2010/05/google-feedback-for-android.html - Michael Celey
是的,我之前在其他应用程序上也看到过这种情况!这就是为什么我想知道是否需要做一些特殊的操作来激活它,因为我的应用程序在崩溃时似乎没有这个功能... - lyk
5
ACRA无法捕获和报告ANR。因为ACRA是在应用程序的VM中运行,而ANR是由系统看门狗在VM之外生成的。但ACRA非常方便报告Java异常。目前不支持ANR和JNI异常报告功能。 - Akh
一个问题。如果我像这个回答https://dev59.com/qnE85IYBdhLWcg3wpFEa#2903866所述那样在崩溃后重新启动应用程序,它仍然会向Google报告崩溃详细信息吗?(我想让它这样做) - Konrad Morawski
显示剩余3条评论

4
当应用程序崩溃时,会生成一个墓碑文件。基本上,你的应用程序需要意识到它的某些部分已经崩溃(如果你依赖于提供回调/状态的一些API或库),但如果只是你的应用程序崩溃了-你将很难确定它是否已经崩溃。
“错误报告”不是你可以在Android中使用的预制类,你可能需要自己编写一个。另外,还有ACRA-http://acra.ch/ 一些链接:

http://android-developers.blogspot.com/2010/05/google-feedback-for-android.html

http://developer.android.com/distribute/googleplay/strategies/app-quality.html


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