Itunes需要增加版本号(CFBundleShortVersionString)和内部版本号(CFBundleVersion)才能对应用进行更新。 我的问题是,当我增加版本号时,是否会重置Bundle版本值? 例如,如果我从当前商店的2.2.1版(Build Number 9.5)更新到版本2.3.0(Build Number 1.0),是否允许这样做?或者Build编号必须> = 9.6? Build号的约定是什么? 版本号和内部版本号之间是否存在这种关系?跟踪上一版本中的旧Build版本对我来说没有意义。
答案 0 :(得分:4)
在iOS中,您可以在更新版本号(CFBundleVersion
)时重置内部版本号(CFBundleShortVersionString
)。
这是你在Xcode项目中需要做的事情。版本号或内部版本号永远不会自动重置。
Apple Technical Note TN2420, Version Numbers and Build Numbers
的iOS:
对于iOS应用程序,构建编号在每个版本系列中必须是唯一的,但它们不需要在不同的版本系列中是唯一的。也就是说,对于iOS应用程序,如果您愿意,可以在不同的版本列表中再次使用相同的版本号。
Mac OS:
但是,对于macOS应用程序,即使在不同版本中,内部版本号也必须单调增加。换句话说,对于macOS应用程序,您不能在不同的版本列表中再次使用相同的版本号。
答案 1 :(得分:1)
构建号实际上对用户不可见,因此实际上并不重要。 Apple希望你增加它,所以只需在其中放一个更高的数字;)通常使用的内部编号是跟踪你所做的内部“编号”。很多人使用自动构建增量器,但更复杂的公司明确地管理它。
由于您似乎并不关心内部版本号,因此您只需使用自动脚本,就不要再查看它了。我用这个脚本:
#!/bin/sh
plist="$1"
dir="$(dirname "$plist")"
buildnum=$(/usr/libexec/Plistbuddy -c "Print CFBundleVersion" "$plist")
IFS="."
save=""
out=""
for i in $buildnum
do
out=$out$save
save="$i."
done
A=($save)
save=${A[0]}
save=`expr $save + 1`
save=$(printf "%05d" $save)
out=$out$save
IFS="ABVVVV"
buildnum=$out
/usr/libexec/Plistbuddy -c "Set CFBundleVersion $buildnum" "$plist"
将代码复制粘贴到文件系统中带有“.sh”扩展名的文件中,您永远不会删除它(或进入项目目录),然后转到xcode项目,在左侧选择项目名称(打开项目设置)单击构建目标,转到“构建阶段”。然后是“运行脚本”类型的新构建阶段
对于'Shell'插入/bin/sh
并在下面的代码行中插入
#/bin/sh
/Users/..PutThePathToTheScriptYouSavedAboveHere.sh "${PROJECT_DIR}/${INFOPLIST_FILE}"
我使用的是使用X.XX.XXXXX的构建版本,脚本只会增加最后一个数字。