iTunes Connect 内部版本号重置
Posted
技术标签:
【中文标题】iTunes Connect 内部版本号重置【英文标题】:iTunes Connect Build Number Reset 【发布时间】:2014-09-04 18:04:12 【问题描述】:iTunes 需要增加 版本号 (CFBundleShortVersionString) 和 内部版本号 (CFBundleVersion) 才能对应用进行更新。
我的问题是,当我增加版本号时,Bundle 版本值会被重置吗?
例如,如果我从当前商店中的版本 2.2.1(内部版本号 9.5)更新到版本 2.3.0(内部版本号 1.0),是否允许?还是内部版本号必须> = 9.6?内部版本号的约定是什么?
版本号和内部版本号之间是否存在这种关系?跟踪以前版本的旧版本号对我来说没有意义。
【问题讨论】:
【参考方案1】:在 ios(而非 macOS)中,您可以在更新版本号 (CFBundleShortVersionString
) 时随时重置内部版本号 (CFBundleVersion
)。
这是你需要在你的 Xcode 项目中做的事情。版本号或内部版本号永远不会自动重置。
Apple Technical Note TN2420, Version Numbers and Build Numbers
iOS:
对于 iOS 应用,内部版本号在每个发布系列中必须是唯一的,但它们不需要在不同的发布系列中是唯一的。也就是说,对于 iOS 应用,您可以在不同的发布序列中再次使用相同的内部版本号。
Mac 操作系统:
但是,对于 macOS 应用程序,即使在不同版本之间,内部版本号也必须单调增加。换句话说,对于 macOS 应用,您不能在不同的发布序列中再次使用相同的内部版本号。
【讨论】:
【参考方案2】:内部版本号实际上对用户是不可见的,因此您在其中放入什么实际上并不重要。苹果希望你增加它,所以只要放一个更高的数字就行了;)通常使用的内部版本号是跟踪你所做的内部“数量”。很多人为此使用自动构建增量器,但更复杂的公司会明确管理它。
由于您似乎并不关心内部版本号,因此您可以只使用自动脚本而不再查看它。我使用这个脚本:
#!/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 项目,在左侧选择您的项目名称(打开项目设置)点击构建目标,进入“构建阶段”。然后是“运行脚本”类型的新构建阶段
对于“外壳”插入 /bin/sh
并在下面的代码行中插入
#/bin/sh
/Users/..PutThePathToTheScriptYouSavedAboveHere.sh "$PROJECT_DIR/$INFOPLIST_FILE"
我正在使用 X.XX.XXXXX 的构建版本,脚本只会增加最后一个数字。
【讨论】:
这实际上并没有回答第一个问题“当我增加版本号时,Bundle 版本值会被重置吗?” Nils 是绝对正确的,“Apple 希望你在里面放一个更高的数字”。在使用 TestFlight 时,我不小心为测试构建设置了较低的编号,并且该构建对我的测试人员不可见,即使它比之前的构建更新。苹果只会显示具有更高数字的新版本。这种行为是有道理的,只是让我感到惊讶的是,他们甚至看不到新版本。以上是关于iTunes Connect 内部版本号重置的主要内容,如果未能解决你的问题,请参考以下文章
版本号不符合 iTunes Connect 格式化程序中三个以句点分隔的整数
我可以将具有相同版本号的新二进制文件上传到 Apple iTunes Connect,以获取处于“准备销售”状态的应用程序吗?