为什么需要在你的 Crash 报告中使用 git SHA

发布于 2024-09-05 23:03:28 字数 2209 浏览 20 评论 0

开发人员在开发中常常会遇到一个问题:使用一个像 Crashlytics 的 crash 管理工具来判断一个特定的 crash/bug 是否被修复或解决。

例如:假设你从当前发布的版本上发现一个 crash,但是本周你已经发布了三次...那么当前的 crash 来自于哪一个版本呢?

通常通过查看 Crashlytics 中版本号和版本名称来解决。但是,你必须正确的匹配发布的标签。如果你可以做到,跟踪到发布时具体的提交,然后再研究。

然而说实话,并不是每个人都能做到这一点。不幸的是,在我的经验中只有极少数公司会做这些,因为公司会不断的减少开发人员,甚至会减少到一个人。这种情况还在持续,所以很难做到正确的匹配发布的标签。从长远来看,找到一个标签,然后找到提交的版本,好吧。。。我不得不说这是一种痛苦。如果某个人忘记了提交的版本,就会什么也做不了。

也就是说,这里需要一个快速的小窍门可以在你使用像 Crashlytics 等工具处理 crash 和 bug 分类的时候帮你节省大量的时间。

添加 GIT SHA 在你的 Android 工程中,打开 build.gradle,然后添加如下的 anroid 代码块:

1 // Hat tip to Jake Wharton for this - found it in the u2020 app
2 def gitSha = 'git rev-parse --short HEAD'.execute([], project.rootDir).text.trim()

退回到 android 代码块中,然后添加一个 git sha 构建配置常量。

1 android {
2 compileSdkVersion 19
3 buildToolsVersion "21.1.0"
4 
5 defaultConfig {
6 applicationId "co.your.appname"
7 minSdkVersion 19
8 targetSdkVersion 19
9 
10 buildConfigField "String", "GIT_SHA", "\"${gitSha}\""
11     }
12 
13 }

现在返回到你创建 Crashlytics 实例的代码中(例子如下)。只需要在初始化脚本的下面添加如下的代码:

1 Crashlytics.setString("git_sha", BuildConfig.GIT_SHA);

这行脚本的作用是:从你的源码管理中获取到 git-sha 的字符串值,然后将字符串设置成“git-sha”的值。

现在,当你的应用崩溃,你将会在 Crashlytics 中得到 bug 汇报,并且可以查看最近提交的代码。

查看 Crashlytics

打开 Crashlytics,进到崩溃汇报。然后,点击“more details”。在这里,你会看到(屏幕下方)应用构建的 git_sha。

然后,你将会看到这个。。。

p2

补习

一旦你识别到 crash 和 git-sha,你就可以通过争论点 checkout 准确的版本。

1 git checkout git_sha_goes_here

这时,你将可以在分离头的状态中查看造成崩溃的原因。然后,你将可以返回当前开发或标记的分支到修复过的问题和发布过的修复。

git_sha 节省了你的大量时间,并且很容易创建。从此,你再也不用通过 git logs,tag,patches 等等来寻找“提交了什么引起了崩溃?我们修复这个崩溃了吗?我们是怎么发现这个崩溃的?“,只需要简单的查看 git sha 来查找 bug,查看当前的 bug 是否修复。如果修复了,很好。如果,还没有,用你的方式修复它。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

梦年海沫深

暂无简介

文章
评论
24 人气
更多

推荐作者

泪是无色的血

文章 0 评论 0

yriii2

文章 0 评论 0

1649543945

文章 0 评论 0

g红火

文章 0 评论 0

嘿哥们儿

文章 0 评论 0

旧城烟雨

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文