Xcode - 仅在ARCHIVE期间增加内部版本号?

jsh*_*erk 55 macos xcode xcode4 xcode4.2 osx-lion

我找到了一些其他帖子,展示了如何使用脚本添加脚本来增加构建号:

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

Xcode项目的"Build number"

Xcode可以在构建时将版本号插入库的文件名吗?

但是我想要做的只是在我使用ARCHIVE(前后)时增加内部版本号.

示例:如果当前内部版本号为21,那么当我选择产品>归档时,内部版本号将增加到22,它将完成构建和创建内部版本号为22的存档文件的过程,然后当它是完成归档后,它会将内部版本号增加到23.

lna*_*ger 79

添加以下脚本,如您发布的第一个链接中列出的示例,但是执行两次.一旦在构建的开始和一次结束时:

if [ $CONFIGURATION == Release ]; then
    echo "Bumping build number..."
    plist=${PROJECT_DIR}/${INFOPLIST_FILE}

# increment the build number (ie 115 to 116)
    buildnum=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${plist}")
    if [[ "${buildnum}" == "" ]]; then
        echo "No build number in $plist"
        exit 2
    fi

    buildnum=$(expr $buildnum + 1)
    /usr/libexec/Plistbuddy -c "Set CFBundleVersion $buildnum" "${plist}"
    echo "Bumped build number to $buildnum"

else
    echo $CONFIGURATION " build - Not bumping build number."
fi
Run Code Online (Sandbox Code Playgroud)

非常感谢你们在你的问题中链接到的问题的作者,这些信息让我开始回答这个问题!

  • 在Xcode 5中,你可以跳过`if [$ CONFIGURATION == Release]; 然后检查并将其添加到存档方案的Post-actions中(Project> Scheme> Edit Scheme ...). (6认同)
  • 这可能听起来很傻但是..你为什么要加两次呢?不会把它增加两倍吗? (2认同)

ccw*_*den 22

这与@ Inafziger的答案非常相似,但是更简洁的代码集,还有一个额外的好处,就是使用XCode中的复选框而不是运行时变量来检查"Release":

在此输入图像描述

按照这些说明操作两次,将一个拖到开头,一个拖到末尾(一个在构建之前运行,一个在构建之后运行):

# xcode-build-bump.sh
# @desc Auto-increment the build number every time the project is run. 
# @usage
# 1. Select: your Target in Xcode
# 2. Select: Build Phases Tab
# 3. Select: Add Build Phase -> Add Run Script
# 4. Paste code below in to new "Run Script" section
# 5. Drag the "Run Script" below "Link Binaries With Libraries"
# 6. Ensure that your starting build number is set to a whole integer and not a float (e.g. 1, not 1.0)
# 7. Check the checkbox "Run script only when installing"

buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${PROJECT_DIR}/${INFOPLIST_FILE}")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "${PROJECT_DIR}/${INFOPLIST_FILE}"
Run Code Online (Sandbox Code Playgroud)

请参阅https://gist.github.com/sekati/3172554

  • 我也非常成功地将这个脚本添加到上面@starkos建议的方案的Post-Actions中.谢谢! (2认同)
  • 如果获得`Print:Entry,"CFBundleVersion",则不存在`$ {PROJECT_DIR} /`部分路径. (2认同)

ork*_*den 7

Xcode包含用于增加版本号的命令行工具agvtool.所以你不必手动完成所有事情PListBuddy.

xcrun agvtool next-version -all

增加您的内部版本号.

xcrun agvtool new-marketing-version 2.0

设置新用户可见版本号.

查看详细信息的完整文档.