我正在尝试在这里实现答案:
但无法使其正常工作。它失败,错误 2 说“plist 中没有内部版本号”
但是如果我在我的 plist 中输入一个内部版本号,脚本会在下一个版本中清除它,然后同样的事情会再次发生。
有任何想法吗?
我正在尝试在这里实现答案:
但无法使其正常工作。它失败,错误 2 说“plist 中没有内部版本号”
但是如果我在我的 plist 中输入一个内部版本号,脚本会在下一个版本中清除它,然后同样的事情会再次发生。
有任何想法吗?
这是我增加内部版本号的方法:
在 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"
我的解决方案如下:
#!/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 文件中。
如果您使用 Jenkins,您可以使用 Jenkins 内部版本号
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $BUILD_NUMBER" "$INFOPLIST_FILE";