【问题标题】:Send stack trace information to backend server from android app on app crash在应用程序崩溃时从 android 应用程序向后端服务器发送堆栈跟踪信息
【发布时间】:2018-01-17 22:42:21
【问题描述】:

我们正在编写一个实时错误处理网络平台,我正在尝试找出通过 http post 请求将堆栈跟踪信息发送回我们的服务器的最佳方式发生崩溃。

我已经使用Thread.setDefaultUncaughtExceptionHandler 回调来注册我们的回调处理程序,以便我们可以捕获堆栈跟踪。悬停由于某些奇怪的原因,在应用程序崩溃后我似乎无法立即发出 http 请求(行为非常奇怪,如果我在代码的错误处理程序部分中发出请求,则根本不会调用响应/错误回调,所以我的猜测是如果在那里调用http请求根本不可靠)。

我还尝试在全局异常处理程序中启动IntentService,以便我可以从那里发出请求,但服务在应用程序崩溃后不会启动。我不知道下一步该尝试什么。

我需要能够立即将错误发送到我们的服务器,而无需使用 3rd 方崩溃报告服务(因为这是我们自己构建的)。关于我接下来可以尝试什么的任何提示?

【问题讨论】:

  • 在设备上使用 ACRA,教它与后端通信。
  • @CommonsWare 非常感谢您的回复。我现在去看看。

标签: android crash crash-reports


【解决方案1】:

@CommonsWare 的推荐 ACRA 是一个非常好的解决方案。

但是关于:

[...] 安卓应用程序崩溃后立即将请求发送回我们的服务器。 [...] 我需要能够立即将错误发送到我们的服务器 [...]

保存报告以供稍后发送,您可以强制应用重启,并在重启时发送保存的报告并使用干净的堆栈。

我使用了类似Ereza/CustomActivityOnCrash library 的东西来做它,它是做什么的:

允许在应用崩溃时启动自定义活动,而不是显示讨厌的“不幸的是,X 已停止”对话框。

所以基本上它会“杀死”你崩溃的应用程序,然后通过友好的活动启动一个新的应用程序。

我用它来显示一个 Activity,告诉用户我们已经收到了崩溃,要求写下更多指导来帮助我们解决问题,以及是否希望在错误修复时联系用户。

【讨论】:

    【解决方案2】:

    我最终按照@CommonsWare 的建议使用了 ACRA 库

    【讨论】:

      猜你喜欢
      • 2015-09-11
      • 2020-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-29
      • 2019-07-26
      相关资源
      最近更新 更多