获取并阅读错误报告

错误报告包含设备日志、堆栈轨迹和其他诊断信息,可以帮助您查找和修复应用中的错误。您可以通过以下几种方式从设备上获取错误报告:使用设备上的生成错误报告开发者选项、Android 模拟器菜单或开发计算机上的 adb bugreport 命令。

图 1. 开发者选项

如需获取错误报告,您必须在设备上启用开发者选项,以便访问生成错误报告选项。

从设备上获取错误报告

图 2. 错误报告已准备就绪

如需直接从您的设备上获取错误报告,请执行以下操作:

  1. 确保您已启用开发者选项
  2. 开发者选项中,点按生成错误报告
  3. 选择所需的错误报告类型,然后点按报告

    稍后,您便会收到错误报告已准备就绪的通知(参见图 2)。

  4. 要分享错误报告,请点按该通知。

从 Android 模拟器上获取错误报告

在 Android 模拟器中,您可以使用“Extended controls”窗口中的 File a bug 功能:

  1. 点击模拟器面板中的 More 图标
  2. Extended controls 窗口中,选择左侧的 Bug report

    此时系统会打开一个屏幕,您可以在其中查看错误报告详细信息,例如屏幕截图、AVD 配置信息和错误报告日志。您还可以输入一条包含复制步骤的消息,以便与报告一起保存。

  3. 等待错误报告完成收集,然后点击 Save Report

使用 adb 获取错误报告

如果您只连接了一台设备,则可以使用 adb 获取错误报告,如下所示:

    $ adb bugreport E:\Reports\MyBugReports
    

如果您没有指定错误报告的路径,则系统会将其保存到本地目录。

如果您连接了多台设备,则必须使用 -s 选项指定设备。运行以下 adb 命令可获取设备序列号并生成错误报告。

    $ adb devices
    List of devices attached
    emulator-5554      device
    8XV7N15C31003476 device

    $ adb -s 8XV7N15C31003476 bugreport
    

检查错误报告 ZIP 文件

默认情况下,ZIP 文件称为 bugreport-BUILD_ID-DATE.zip,它可能会包含多个文件,但最重要的文件是 bugreport-BUILD_ID-DATE.txt。此文件就是错误报告,它包含系统服务 (dumpsys)、错误日志 (dumpstate) 和系统消息日志 (logcat) 的诊断输出。系统消息包括设备抛出错误时的堆栈轨迹,以及从所有应用中使用 Log 类写入的消息。

ZIP 文件中有一个 version.txt 元数据文件,其中包含 Android 版本号,而且启用 systrace 后,ZIP 文件中还会包含 systrace.txt 文件。Systrace 工具可以获取并显示应用进程和其他 Android 系统进程的执行时间,从而帮助分析应用的性能。

dumpstate 工具会将文件从设备的文件系统复制到 ZIP 文件的 FS 文件夹下,以便您引用它们。例如,设备中的 /dirA/dirB/fileC 文件会在 ZIP 文件中生成 FS/dirA/dirB/fileC 条目。

图 3. 错误报告文件结构

如需了解详情,请参阅阅读错误报告

从用户那里获取报告

如上所述,您自己使用应用时,获取错误报告非常有用,但最终用户无法轻松地与您分享这些类型的错误报告。要从真实用户那里获取包含堆栈轨迹的崩溃报告,您应该利用 Google Play 和 Firebase 的崩溃报告功能。

Google Play 管理中心

您可以从 Google Play 管理中心获取报告,以便查看从 Google Play 安装您的应用的用户那里收集的有关崩溃和应用无响应 (ANR) 错误的数据。您可以查看过去六个月的数据。

如需了解详情,请参阅 Google Play 管理中心帮助中心内的查看崩溃和应用无响应 (ANR) 错误

Firebase 崩溃报告

Firebase Crashlytics 报告会创建有关应用中出现的错误的详细报告。此报告会基于错误是否具有相似堆栈轨迹将其分门别类,并根据错误对用户所产生影响的严重程度进行分级。除自动发送的报告外,您还可以通过记录自定义事件获知导致应用崩溃的操作。

您只需将 Firebase 依赖项添加build.gradle 文件,即可开始接收用户发送的崩溃报告。如需了解详情,请参阅 Firebase Crashlytics