【问题标题】:Xcode script to increment build based on versionXcode 脚本根据版本增加构建
【发布时间】:2015-03-29 14:50:30
【问题描述】:

我设法重现了构建阶段脚本from this SO question,它在每次构建应用程序时都会增加内部版本号。如果我希望内部版本号为version.build,任何人都可以建议脚本的外观,即如果我的应用程序版本是 0.2,我希望将内部版本号设置为 0.2.001、0.2.002 等。然后,当我将内部版本号更改为 0.3 时,我希望内部版本重新启动到 001,所以我得到 0.3.001、0.3.002 等。

这是我当前的脚本:

buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"

更新

我想要做的是:

  • 从 plist 文件中获取 shortVersion(例如 0.2)
  • 从 plist 文件(例如 0.2.007)中获取 buildNumber
  • buildNumber 分为 0.2 和 007
  • 如果 0.2 等于 shortVersion,只需递增 007 -> 008 并再次加入两者,因此新的 buildNumber 为 0.2.008
  • 否则(例如 shortVersion 已更改为 0.3),将内部版本号重置为 001 并将两者结合在一起以获得新的 buildNumber 为 0.3.001李>

不幸的是,我对 bash 脚本一无所知,所以如果有人可以提供脚本,我将不胜感激。

【问题讨论】:

    标签: xcode build-script


    【解决方案1】:
    #!/bin/bash
    
    # get the configuration
    conf=${CONFIGURATION}
    
    # only change build number if we are building for Release or AdHoc!
    if [ $conf == Release ] || [ $conf == AdHoc ]; then
    
    # get the build number
    buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
    echo "Old Build number $buildNumber"
    
    # split it by dots
    arrIN=(${buildNumber//\./ })
    
    # get the last element position
    lastElementPosition=$((${#arrIN[@]} - 1))
    # get the minor version from the last array element
    minorVersion=${arrIN[${lastElementPosition}]}
    # Increase it by 1
    minorVersion=$((minorVersion+1))
    # Format it as 3 digit
    minorVersion=`printf "%03d" $minorVersion`
    echo "New minor version $minorVersion"
    # Update it on the array
    arrIN[$lastElementPosition]=$minorVersion
    
    # construct the build number now by joining the array
    buildNumber=$(IFS=. ; echo "${arrIN[*]}")
    
    echo "New Build number $buildNumber"
    
    #update it in plist
    /usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"
    
    fi
    

    这是您想要的脚本。 代码上都有解释,所以你应该看看我在做什么

    上述脚本中使用的 bash 函数参考:

    https://stackoverflow.com/a/5257398/312312拆分字符串

    填充号码来自:https://stackoverflow.com/a/8789779/312312

    加入数组来自:https://stackoverflow.com/a/9429887/312312

    【讨论】:

    • 嗨。我试过你的脚本,但它的作用是生成 437.001、438.001 等版本。虽然版本号(略高于 Xcode 中的版本号)仍然是 0.2
    • 我的代码中解释了您需要的所有步骤。当您将内部版本号更改为 0.3 时,您必须自己将内部版本重置为 001,因为 bash 脚本不知道旧的主要版本。至于版本,您需要使用CFBundleShortVersionString
    • 但是如果你得到旧的内部版本号,它包含 0.2,并将它与 CFBundleShortVersionString 进行比较,即 0.3,那么计数器可以通过代码重置为 001,不是吗?
    猜你喜欢
    • 2012-07-30
    • 1970-01-01
    • 2021-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-29
    • 1970-01-01
    • 2015-08-29
    相关资源
    最近更新 更多