错误报告包含设备日志、堆栈跟踪和其他诊断信息,以帮助您查找和修复应用中的错误。要从设备捕获错误报告,请使用设备上的“获取错误报告”开发者选项、Android Emulator 菜单或开发机器上的adb bugreport
命令。
要获取错误报告,您必须在设备上启用开发者选项才能访问“获取错误报告”选项。
从设备捕获错误报告
要直接从您的设备获取错误报告,请执行以下操作
- 启用开发者选项。
- 在开发者选项中,点击获取错误报告。
- 选择所需的错误报告类型,然后点击报告。
稍等片刻,您会收到一条通知,告知错误报告已准备就绪,如图 2 所示。
- 要共享错误报告,请点击通知。
从 Android Emulator 捕获错误报告
在 Android Emulator 中,您可以使用扩展控件中的“提交错误”功能
- 点击模拟器面板中的“更多” 。
在“扩展控件”窗口中,选择“错误报告”。
这将打开一个屏幕,您可以在其中查看错误报告详细信息,例如屏幕截图、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
条目。
有关更多信息,请参阅阅读错误报告。
获取用户的报告
在您自己使用应用时,捕获错误报告非常有用,但您的最终用户无法轻松地与您共享此类错误报告。要从真实世界的用户那里获取带有堆栈跟踪的崩溃报告,请利用 Google Play 和 Firebase 崩溃报告功能。
Google Play 控制台
您可以从Google Play 控制台获取报告,以查看从 Google Play 安装您的应用的用户发生的崩溃和应用无响应 (ANR) 错误的数据。数据可用于过去六个月。
有关更多信息,请参阅 Play 控制台帮助中的查看崩溃和应用无响应 (ANR) 错误。
Firebase 崩溃报告
Firebase Crashlytics 报告会创建应用中错误的详细报告。错误根据类似的堆栈跟踪分组为问题,并根据对用户的影响严重程度进行分类。除了自动报告外,您还可以记录自定义事件以帮助捕获导致崩溃的步骤。
要开始接收任何用户的崩溃报告,请将Firebase 依赖项添加到您的build.gradle
文件中。有关更多信息,请参阅Firebase Crashlytics。