在测试App版本升级功能或者需要多版本切换的时候,可能需要经常去确定当前App的版本号,如果中途打断很有可能会忘记了当前的版本号,并且App内部如果没有显示版本号的功能,就只能从头来了。
如果能让App的版本信息直接显示到图标上,测试的时候是不是就会更加直观,更加效率,更加苏胡。
就像酱紫:
怎么做呢?
在Xcode中Target的Build Phases中,可以添加一个Run Script的Build Phase来执行一些脚本做一些操作,这里的脚本会在每次build的时候执行,然后我们就可以通过脚本给App图标添加版本信息了。
Run Script是怎么玩的
添加一个 Run Script
编辑Shell
Command + B 构建工程,可以通过Command + 8 查看构建日志,测试脚本已经成功执行。
通过Shell获得应用版本信息
PlistBuddy
是一个Mac里的命令行下读写plist文件的工具,App的基本信息都存储在plist 文件中,我们可以通过PlistBuddy
来获取。
获取Version
~ echo `/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" /Users/dimsky/Documents/Project/Project-Info.plist`
1.0.0
获取Build
~ echo `/usr/libexec/PlistBuddy -c "Print CFBundleVersion" /Users/dimsky/Documents/Project/Project-Info.plist`
1
获取工程版本信息,如果使用的Git
获取Branch
~ git rev-parse --abbrev-ref HEAD
master
获取Commit version
~ git rev-parse --short HEAD
f360b92
将版本信息填充到App 图标上
将版本信息填充到图标上,这里需要安装2个工具:ImageMagick和ghostscript,ImageMagicK的convert命令可以将文字写到图片上。
~ brew install imagemagick
~ brew install ghostscript
通过convert 将填充版本信息居中显示在图标下方。
~ convert -background '#0005' -fill white -gravity center -size 180x60 caption:"1.1.1 (10)\nmaster\n56789998" ./iPhone@3x-1.png +swap -gravity south -composite ./target.png
前后对比:
更完善的Shell
我们已经把版本信息填充到图标中,但是我们在Run script中执行的Shell需要动态的路径,而且还有不同设备的图标需要填充,最好将工具的安装都可以全自动化,不用着急,现在已经有人替我们完成了这个Shell脚本,我们只需要下载下来,在 Run script 中引入就可以了。
这样你在编译构建的时候在App 图标上就能自动显示版本信息了。
参考:
http://merowing.info/2013/03/overlaying-application-version-on-top-of-your-icon/