我想在这里实现答案:
Better way of incrementing build number?
但无法让它正常工作。它失败了,错误2说“没有plist中的内部版本号”
但是如果我在我的plist中放置一个内部版本号,那么脚本会在下一个版本中清除它,然后同样的事情会再次发生。
有什么想法吗?
答案 0 :(得分:24)
以下是我增加内部版本号的方法:
在目标>摘要选项卡,设置初始构建#
然后使用此脚本增加内部版本号:
#!/bin/bash
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$(($buildNumber + 1))
buildNumber=$(printf "%04d" $buildNumber)
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"
或者如果您想要以十六进制编号:
#!/bin/bash
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$((0x$buildNumber))
buildNumber=$(($buildNumber + 1))
buildNumber=$(printf "%04X" $buildNumber)
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"
答案 1 :(得分:2)
我的解决方案如下:
#!/bin/bash
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$(echo $buildNumber | sed 's/0*//')
buildNumber=$(($buildNumber + 1))
buildNumber=$(printf "%04d" $buildNumber)
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"
使用sed删除前导零,递增值并使用四位数填零的数字将其打印在plist文件中。
答案 2 :(得分:0)
如果你使用Jenkins,你可以使用Jenkins内部版本号
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $BUILD_NUMBER" "$INFOPLIST_FILE";