在 iOS App 中显示 Build 时间和 git 分支名和 commit 哈希
前言
无论测试包还是线上包,如果能在 App 里显示(直接显示或隐藏入口中显示) Build 时间和 git 分支名和 commit 哈希, 将有利于我们复现和定位 bug。那如何在 App 里将以上信息优雅地显示出来呢?做了一番搜索后,现将实现方法总结到本文章中。
显示 Build 时间
获取 Build 时间:
如果需要,可以对日期格式进行格式化:
获取到 Build 时间之后,可以将其显示在 App 的设置页面底部;或者默认隐藏,当用户触发某些机关(如连续点击“关于”文字 5 次)之后再显示出来。
显示 git 分支名和 commit 哈希
为了说明这个问题,首先常见一个示例工程 GitInfoDemo,并使用 git init
初始化 git 仓库,并创建一个 commit。
创建
BuildInfo.plist
文件:
打开工程,在 Info.plist 文件所在目录新建一个 plist 文件,命名为 BuildInfo.plist
。并在 BuildInfo.plist
中增加一个 String 类型的字段 GIT_INFO
,该字段的值为空,这一步是必需的。
创建脚本代码
选中工程 -> 选中 Target -> 选中 Build Phases,
点击红圈中的“+”按钮,
在弹出框中选择“New Run Script Phase”,
如下图所示,将脚本代码拷贝进代码区:
使用如下代码读取
BuildInfo.plist
中的数据:
注意事项:切换分支或更新 commit 号之后的首次编译或运行将不能得到正确的输出,因为 git 信息更新后,要等第一次编译结束 Shell 脚本才能更新
BuildInfo.plist
文件。在实际项目中,这个瑕疵一般是不影响输出结果的,因为我们可以在 Archive 正式包前,可以至少 Build 或 Run 一次工程来规避此问题。
BuildInfo.plist
初始版本文件是必要的,但不需要使用 git 跟踪此文件的更改。我们可以在BuildInfo.plist
文件被添加到 git 仓库后,使用git update-index --no-assume-unchanged B
uildInfo.plist
命令来停止跟踪此文件的更新。
总结
当 bug 发生时,如果知道 bug 发生的包所对用的代码状态,将有利于我们快速定位并修改 bug。本文介绍了在 App 中显示编译时间和 git 信息的方法,使用本方法,将一劳永逸地解决掉 bug 和代码版本难以对应的问题。
下图是 Demo 运行结果的样子:
版权声明: 本文为 InfoQ 作者【疯清扬】的原创文章。
原文链接:【http://xie.infoq.cn/article/e2c4775298e82204bdefac7e8】。文章转载请联系作者。
评论