［音乐］
DOUG STEVENSON: 你好， 感谢收看本期 Firecast
我叫 Doug Stevenson，我将向你展示
如何开始利用 Firebase 崩溃报告
管理你 Android 应用中的崩溃。
试想，如果你花了很长时间
开发并测试你的 Android 应用
而且你刚刚把它发布到 Play Store 上 供大家使用
那你现在肯定希望
用户能从你的应用中获得最佳体验
因此，如果程序中有 bug 的话
你需要尽早发现，并把它消灭
为此，在发布前
你可以通过一行简单的代码
把 Firebase 崩溃报告的 SDK 配置进去
如果你还从来没在应用中
加入过 Firebase 功能
请先观看这个视频
然后回来继续学习
如何使用 Firebase 崩溃报告
我手头已经有使用 Firebase 的应用了
我现在要把崩溃报告添加进去
首先打开应用的 build dock gradle
并找到项目依赖的段落
然后把 Firebase 崩溃报告加入进去
录制这段视频的时候， 最新版本是 10.0.1
你应该使用最新的版本
接下来把项目同步
大功告成
只需要加入项目依赖
就能记录下你应用的崩溃情况
不需要多写任何代码
就这么简单
每当出现让你的应用崩溃的异常
你就会在 Firebase 控制台中
收到这个异常及其完整堆栈轨迹
在此基础上，你还可以
在 Firebase 崩溃报告 API 上
多写几行代码，取得更好的成果
例如，你可以把崩溃报告中的信息
记录在日志中
从而了解在崩溃发生之前
相关的情况如何
你还可以对 发现后不知如何处理的异常
进行报告
这些异常会在控制台中以 非致命报告的形式出现
通常来讲，已发现的异常不必报告
但在为不常见或意料之外的问题寻找原因时
这样做可能会有帮助
我现在就来试用几个小技巧
首先，我要添加一行代码
来把在报告异常之前肯定会发生的事 记录在日志中
然后我将报告
我自己炮制的假异常
这样做和我真的发现了一个异常
效果是一样的
现在，我启动应用 然后查看它的日志文件
如果想查看它的报告
我可以打开应用的 Firebase 控制台
选中左侧的崩溃报告选项
你可以看到，应用的控制台中
我那个异常现在显示为
未导致应用崩溃的非致命错误
点进去就能看到设备的细节
这一次，可以看出问题出在仿真器上
除了我刚记录在日志上的信息外
完整的堆栈轨迹也在这里
问题解决后，可以按关闭按钮把它关闭
它就不会再出现了
当 Firebase 崩溃报告发现新的崩溃时
我还会收到电子邮件通知
邮件中包括 关于这次崩溃的一些基本细节
还有一个按钮
点击按钮即可到控制台中 查看崩溃情况
从报告发送到它在控制台中出现
通常不到一分钟
当你自己尝试的时候
一定要确保网络连接顺畅
也要试着重启应用
确保未发送的报告有机会
出现在控制台中
像这样的新应用没有多少有趣的崩溃
不过你可以使用 Firebase 的演示应用
看些更有意思的数据
你可以通过项目下方 描述中的链接
以只读形式将它打开
演示应用的名字叫 Flood-It! ， 由 Lab Pixies 开发
它是一款游戏, 可以从 Play Store 下载
现在我们一起来看一下
这款应用的崩溃报告是什么样的
这个项目既有相关的 Android 应用
又有 iOS 应用
我要选择查看的是
Android 版本的崩溃
在这里，我们可以看到 按照出现次数排列的
最新崩溃的历史纪录 和下方表格中的详细信息
点击其中一个
就能看到堆栈轨迹
点击 View Details ， 就能看到关于这个错误的
一些统计数据
你还可以通过点击箭头
查看这个崩溃的每一次出现情况
所有这些崩溃的总和 被称为一个 issue
每个 issue 都是由 彼此相似的崩溃组成的
它们代表的是同一个错误
不过堆栈轨迹和设备细节
可能略有不同
对每个崩溃， 你都可以查看它发生时
设备的具体情况
在这个错误中，堆栈轨迹最有用的部分
碰巧被隐藏起来了
因此我要把它展开
这里你可以看到
问题是从它的 onResume method 中的
extra steps activity 那里开始的
继续往下翻，就能看到
崩溃出现前具体情况的日志
这里有一大堆崩溃出现时
从 Firebase Analytics 事件中
自动创建的日志项目
这些事件的日志是自动创建的
你一行代码都不用写
以上就是 Firebase 崩溃报告的 基本介绍
不过在把应用发布在 Play Store 上之前
还有几件事是你需要知道的
首先，一定要把你的开发环境
和产品环境分隔开
常用的办法是为每种版本号
新建一个 Firebase 项目
这样一来，开发时出现的崩溃
就不会和用户在产品中遇到的
混在一起
关于这个问题，如果想了解更多
你可以阅读这篇帖子
其次，如果你使用了 ProGuard 来混淆和压缩代码
你需要上传 为你发布到 Play Store 的版本
而生成的 mappings file
你可以把它上传至控制台
也可以用 gradle 插件 运行一个会将它上传的测试
请务必阅读与此相关的文件
因为如果不上传正确的 mapping file
你就无法读取堆栈轨迹
如果有任何关于 Firebase 崩溃报告的问题
请在推特上通过 #askFirebase 标签 来告诉我们
也可以使用 Firebase 的其它支持渠道
我叫 Doug Stevenson
感谢收看，一定要把 bug 都消灭哦
谢谢你观看我们的视频
这里还有更多视频等着你
别忘了订阅 Firebase 的 YouTube 频道哦
［音乐］