Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于版本增量生成的Xcode脚本_Xcode_Build Script - Fatal编程技术网

基于版本增量生成的Xcode脚本

基于版本增量生成的Xcode脚本,xcode,build-script,Xcode,Build Script,我已经成功地复制了一个构建阶段脚本,它在每次构建应用程序时都会增加构建数量。如果我希望版本号为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_

我已经成功地复制了一个构建阶段脚本,它在每次构建应用程序时都会增加构建数量。如果我希望版本号为
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文件(e.x.0.2)获取短版本
  • 从plist文件(e.x.0.2.007)中获取构建编号
  • buildNumber分为0.2和007
  • 如果0.2等于shortVersion,只需增加007->008并再次将两者合并,这样新的buildNumber为0.2.008
  • 否则(e.x.shortVersion已更改为0.3),将内部版本号重置为001,并将两者合并,以将新的内部版本号设置为0.3.001
不幸的是,我对bash脚本一无所知,因此如果有人能提供脚本,我将不胜感激

#!/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函数的参考:

正在从以下对象拆分字符串:

从以下位置填充数字:


正在从以下位置加入阵列:

Hi。我已经尝试过你的脚本,但它所做的是生成437.001、438.001等版本,而版本号(在Xcode中刚好高于版本号)保持为0.2。我的代码中解释了你需要的所有步骤。当您将内部版本号更改为0.3时,您必须将内部版本重置为001,因为bash脚本不知道旧的主要版本。至于版本,您需要使用
CbundleShortVersionString
键,但是如果您获得包含0.2的旧版本号,并将其与
CbundleShortVersionString
(0.3)进行比较,那么计数器可以通过代码重置为001,不是吗?