错误报告包含设备日志、堆栈跟踪和其他诊断信息,可帮助您查找并修复应用中的错误。要从设备捕获错误报告,请使用设备上的“开发者选项”中的“报告错误”功能、Android 模拟器菜单,或开发机器上的 adb bugreport 命令。
图 1. 设备上的开发者选项。
要报告错误,您必须在设备上启用开发者选项,才能访问“报告错误”选项。
从设备捕获错误报告
图 2. 错误报告已就绪。
要直接从设备获取错误报告,请执行以下操作:
- 启用开发者选项。
- 在开发者选项中,点击报告错误。
- 选择您想要的错误报告类型,然后点击报告。
片刻之后,您会收到一条错误报告已就绪的通知,如图 2 所示。
- 要共享该错误报告,请点击该通知。
从 Android 模拟器捕获错误报告
在 Android 模拟器中,您可以使用扩展控件中的“提交错误”功能。
- 点击模拟器面板中的“更多”
。 在“扩展控件”窗口中,选择“错误报告”。
这将打开一个屏幕,您可以在其中查看错误报告详情,例如屏幕截图、AVD 配置信息以及错误报告日志。您还可以输入带有重现步骤的消息,将其随报告一起保存。
等待错误报告收集完成,然后点击“保存报告”。
使用 adb 捕获错误报告
如果您只连接了一台设备,可以使用 adb 获取错误报告,如下所示:
$ adb bugreport E:\Reports\MyBugReports
如果您未指定错误报告的路径,它将保存在本地目录中。
如果您连接了多台设备,则必须使用 -s 选项指定设备。运行以下 adb 命令以获取设备序列号并生成错误报告:
$ adb devices List of devices attached emulator-5554 device 8XV7N15C31003476 device $ adb -s 8XV7N15C31003476 bugreport
保存较早的错误报告
默认情况下,错误报告保存在 /bugreports 中,可以使用以下命令进行查看:
$ adb shell ls /bugreports/ bugreport-foo-bar.xxx.YYYY-MM-DD-HH-MM-SS-dumpstate_log-yyy.txt bugreport-foo-bar.xxx.YYYY-MM-DD-HH-MM-SS.zip dumpstate-stats.txt
然后,您可以通过 adb pull 拉取 zip 文件。
$ adb pull /bugreports/bugreport-foo-bar.xxx.YYYY-MM-DD-HH-MM-SS.zip
检查错误报告 zip 文件
默认情况下,zip 文件命名为 bugreport-BUILD_ID-DATE.zip。该 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) 错误的数据。这些数据可查阅过去六个月内的记录。
如需了解更多信息,请参阅 Play 管理中心帮助中的查看崩溃和应用无响应 (ANR) 错误。
Firebase 崩溃报告
Firebase Crashlytics 报告会为您应用中的错误创建详细报告。错误会根据相似的堆栈跟踪分组为“问题”,并按对用户的影响严重程度进行分类。除了自动报告外,您还可以记录自定义事件,以帮助捕获导致崩溃的操作步骤。
要开始接收任何用户的崩溃报告,请将 Firebase 依赖项添加到您的 build.gradle 文件中。如需了解更多信息,请参阅 Firebase Crashlytics。