将版本信息显示在App图标上

作者: dimsky | 来源:发表于2016-04-10 20:38 被阅读2604次

在测试App版本升级功能或者需要多版本切换的时候,可能需要经常去确定当前App的版本号,如果中途打断很有可能会忘记了当前的版本号,并且App内部如果没有显示版本号的功能,就只能从头来了。
如果能让App的版本信息直接显示到图标上,测试的时候是不是就会更加直观,更加效率,更加苏胡。
就像酱紫:

medclipper
怎么做呢?

在Xcode中Target的Build Phases中,可以添加一个Run Script的Build Phase来执行一些脚本做一些操作,这里的脚本会在每次build的时候执行,然后我们就可以通过脚本给App图标添加版本信息了。

Run Script是怎么玩的

添加一个 Run Script


New Run Script

编辑Shell


Test Shell

Command + B 构建工程,可以通过Command + 8 查看构建日志,测试脚本已经成功执行。

Shell result
通过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/

相关文章

网友评论

  • _YZG_:亲爱的, 我qq:819501513, 有个脚本问题报错, 麻烦帮帮忙呗
    1.0.1 (12)\nmaster\n2101c2d
    base path /Users/yzg/Library/Developer/Xcode/DerivedData/yzg-gqghuivnlslemvamkwdbvmyrmkfg/Build/Products/Debug-iphonesimulator/yzg.app/
    base path /Users/yzg/Library/Developer/Xcode/DerivedData/yzg-gqghuivnlslemvamkwdbvmyrmkfg/Build/Products/Debug-iphonesimulator/yzg.app/AppIcon29x29@2x.png
    Reverting optimized PNG to normal
    xcrun -sdk iphoneos pngcrush -revert-iphone-optimizations -q ./AppIcon29x29@2x.png ./AppIcon29x29@2x-normalized.png
    libpng warning: Input PNG is not optimized for iPhone OS. Copying source file to destination...
    moving pngcrushed png file at ./AppIcon29x29@2x.png to ./AppIcon29x29@2x-normalized.png-tmp
    Moving normalized png file to original one ./AppIcon29x29@2x-normalized.png to ./AppIcon29x29@2x.png
    identify: no decode delegate for this image format `PNG' @ error/constitute.c/ReadImage/501.
    identify: no decode delegate for this image format `PNG' @ error/constitute.c/ReadImage/501.
    /Users/yzg/Desktop/yzg/yzg/iconVersioning.sh: line 108: ( * 47) / 100: syntax error: operand expected (error token is "* 47) / 100")
    Command /bin/sh failed with exit code 1


    谢谢了
    _YZG_:@dimsky 在别人电脑可以出现,别人电脑是7.2.1,我的是7.3不知道有关系没
    dimsky:@_YZG_ 很明显是没有获取到图片的高度 ,107 行代码为获取高度代码,你可以echo
    出来看看,有可能是你的图标有问题。
  • _YZG_:安装brew的时候老是报400..
  • _YZG_:提到的软件怎么安装啊, 都要安装吗? 不太会啊
    _YZG_:@dimsky 还没有brew,这东西要装吗?不太了解,报400错误,应该是翻不了墙吧?
    dimsky:@_YZG_安装执行:brew install imagemagick && brew install ghostscript
  • LV大树:我是觉得你太牛了。可以这样玩。
    dimsky:@为什么呢 哈哈,你也可以的:smile:
  • 541c23c45796:收藏了
  • 摆渡人不渡人:我在想动态切换App的icon是不是也能这么去做呢?
    dimsky:@摆渡人不渡人 当然可以,具体实现你可以下载完整版的脚本找到。
  • 95114676ad51:不错不错
  • 不是谢志伟:先mark,回头试试:blush:
  • 煜寒了:学习了
  • SwiftYang:居然可以这么做!涨姿势了

本文标题:将版本信息显示在App图标上

本文链接:https://www.haomeiwen.com/subject/wxgblttx.html