10

我正在尝试在这里实现答案:

增加内部版本号的更好方法?

但无法使其正常工作。它失败,错误 2 说“plist 中没有内部版本号”

但是如果我在我的 plist 中输入一个内部版本号,脚本会在下一个版本中清除它,然后同样的事情会再次发生。

有任何想法吗?

4

3 回答 3

26

这是我增加内部版本号的方法:

在 Target > Summary 选项卡中,设置初始构建 # 在此处输入图像描述

然后使用此脚本增加内部版本号:

#!/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"
于 2012-09-11T13:01:14.390 回答
3

我的解决方案如下:

#!/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 文件中。

于 2013-07-03T10:44:15.533 回答
0

如果您使用 Jenkins,您可以使用 Jenkins 内部版本号

/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $BUILD_NUMBER" "$INFOPLIST_FILE";
于 2012-11-28T01:54:54.390 回答