Xcode 自动管理版本号实践

关于版本号的基础知识见:
[浅谈iOS版本号] (http://segmentfault.com/a/1190000002423661)
其中提到管理版本号两种技术方式,对其实践后,对其中一些地方增加了些补充说明, 希望对读者有所帮助。

第一种:agvtool (Apple-generic versioning tool)

Segmentfault 中图片中的 current project version 指的就是 build number.

简单说下 agvtool 的用法:
首先,打开终端命令行 ,cd 工程直接路径 例如工程名为AutoCellDemo 则cd /Users/itdept/Desktop/practice/AutoCellDemo

  1. 用命令行来更新版本号:

    • 更新version number 到2.0 则输入命令:$xcrun agvtool new-marketing-version -all 2.0
    • 更新build number 到2.0 则输入命令:$xcrun agvtool new-version -all 2.0
  2. 自动更新版本号

    • 自动增加你的Build Number 执行的命令:$xcrun agvtool next-version -all
    • 自动增加你的Version Number 执行的命令:$xcrun agvtool next-marketing-version -all
    • 把如上代码加到脚本中即可,这样就实现了每次 Build 就 build number 自动加1
  3. 查看版本号

    • 查看当前的Version Number 执行:$xcrun agvtool what-marketing-version
    • 查看当前的Build Number 执行:$xcrun agvtool what-version
第二种:PlistBuddy

PlistBuddy 介绍:

Plist文件是以.plist为结尾的文件的总称. 众所周知, Plist在Mac OSX系统中起着举足轻重的作用,就如同Windows里面的Registry一样,系统和程序使用Plist文件来存储自己的安装/配置/属性等信息。正如可以使用命令行命令来处理大多数系统管理一样,操作Plist文件也是系统提供的。PlistBuddy是一个Mac里的命令行下读写plist文件的工具。位于/usr/libexec/下,由于这个路径不在默认的PATH里,需要通过绝对路径/usr/libexec/PlistBuddy引用。

1) 添加
    plistbuddy -c 'Add :Software:Gallery:Version string "1.0"' ~/Desktop/com.sample.plist
 2) 输出
     plistbuddy -c "Print" ~/Desktop/com.sample.plist
3) 修改
    plistbuddy -c 'Set :Software:Gallery:Version "1.1"' ~/Desktop/com.sample.plist
4) 删除
   plistbuddy -c 'Delete :Software:Gallery:Version' ~/Desktop/com.sample.plist
5) 合并
   plistbuddy -c "Merge ~/Desktop/Global.plist :Software:Gallery" ~/Desktop/com.sample.plist
注意事项:

1) 如何定义嵌套的键值: 正如前面说的它使用一种简单的描述方式,上一层的键值在前面,而每个键值之间使用”:”符号分隔,比如:本文最初的例子中Software->Gallery->OnlineMarketplace表述为:”:Software:Gallery:OnlineMarketplace”, 第一个”:”表示根.

2) 而如果键值的名称包含空格等特殊字符的时候,如同命令行的转义字符一样,使用”/”来转义,比如: “:Software:Gallery:Online/ Marketplace”.

3) PlistBuddy如果不使用”-c”参数,则进入人机交互模式, “-c”的意思就是执行它后面的命令列表,而命令如果有参数,需要把它们包含在引号中,

4) 在Xcode中的脚本通常如下
/usr/libexec/PlistBuddy -c “Set :CFBundleVersion appBuild"" {TARGET_BUILD_DIR}/${INFOPLIST_PATH}”

最后:Segmentfaults 上的那份脚本,在App 上显示版本号正常,在Xcode的Plist中显示不正常,修改后的脚本如下

if [ $CONFIGURATION == Debug ]; then  
# 获取Git 提交数  
git=`sh /etc/profile; which git`  
buildNumber=`"$git" rev-list --all |wc -l`  

# 将buildNumber 写入 plist 文件  
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "${PROJECT_DIR}/${INFOPLIST_FILE}"  
else  
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "${PROJECT_DIR}/${INFOPLIST_FILE}"  
fi 

哈哈,大功告成!

附:Demo 连接:
https://github.com/skyming/BuildVsersion

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值