必须在App Store发布时增加哪些iOS应用程序版本/内部版本号?

iOS应用程序的三个版本/构build字段是:

  • “Version” CFBundleShortVersionString (String – iOS,OS X)指定包的发行版本号,它标识应用程序的已发布迭代。 发行版本号是由三个以句点分隔的整数组成的string。

  • “Build” CFBundleVersion (String – iOS,OS X)指定了bundle的版本号,标识bundle的迭代(释放或未发布)。 构build版本号应该是一个由三个非负的,句点分隔的整数组成的string,第一个整数大于零。 该string应该只包含数字(0-9)和句点(。)字符。 前导零从每个整数中截断,将被忽略(即1.02.3相当于1.2.3)。 此密钥不可本地化。

  • “iTunes Connect版本号” :在iTunes Connect上创build应用程序的新版本时指定的版本号。

我的问题是:

当新版本的应用上传到App Store时,需要增加哪个版本/内部版本号?

CFBundleShortVersionStringCFBundleVersion在应用程序更新之间保持不变?

iTunes上传无效版本/内部版本号时显示的Apple信息源的额外点或确切的错误信息。


Android / Google Play注意:

提示这个问题的讨论是,Google Play商店中的Android应用的公共“版本”不需要增加,也不会被validation。 android:versionName在版本,升级,降级或任何随机string之间可以保持不变,而不是看起来是有效的“版本号”。

android:versionName – 一个string值,表示应用程序代码的发行版本,因为它应该显示给用户。

该值是一个string,以便您可以将应用程序版本描述为<major>.<minor>.<point>string或任何其他types的绝对或相对版本标识符。

android:versionCode被强制为一个递增发布的整数。


苹果文档

正如刚刚接受的答案中所指出的那样,苹果最近在其网站上增加了一个技术说明,详细讨论了他们的版本/内部版本号scheme:

Apple技术说明TN2420 – 版本号和内部版本号

Apple技术说明TN2420,版本号和内部版本号

概要:

  • 对( VersionBuild number Version Build number )必须是唯一的。
    • 该顺序是有效的:(1.0.1,12) – >(1.0.1,13) – >(1.0.2,13) – >(1.0.2,14)…
  • VersionCFBundleShortVersionString )必须按升序排列。
  • Build numberCFBundleVersion )必须按升序排列。

版本号和内部版本号清单

将新版本提交给App Store时,可以检查以下几项内容。 确保您正确设置了版本号和内部版本号,这样可以避免您的应用因configuration不当而被自动拒绝。

  1. 对于您的应用程序的每个新版本,您需要创build一个新的版本号。 该数字应该比您使用的上一个版本号码更大。 虽然您可以为应用程序的任何特定版本提供许多版本,但您只需为每个新版本的应用程序使用一个新的版本号。
  2. 您不能重复使用版本号。
  3. 对于您提交的每个新版本,您都需要创build一个新的内部版本号,其值大于您使用的最后一个内部版本号(对于同一版本)。
  4. 您可以在不同的发行版中重新使用版本号,但不能在同一发行版中重新使用版本号。

根据清单,以下(Version, Build Number)序列也是有效的。

  • 案例:在不同的发行版中重新使用Build Number

    (1.0.0,1) – >(1.0.0,2)→…(1.0.0,11)→( 1.0.1,1 )→(1.0.1,2)

CFBundleShortVersionString应该与您给iTunes Connect的版本号相匹配。 这也是当用户在App Store中查看你的App时出现的版本号。

版本号在商店中显示,该版本应该与稍后在iTunes Connect中input的版本号相匹配。

资源

CFBundleVersion不会显示在App Store中,而是由iTunes用来确定您的应用程序何时更新。

如果您更新构buildstring(如“设置版本号和构buildstring”中所述),则iTunes会识别构buildstring已更改,并将新的iOS App Store程序包正确地同步到testing设备。

资源

更具体地回答你的问题

当新版本的应用上传到app store时,需要增加哪个版本/内部版本号?

都。 一个显示在App Store中,另一个由iTunes用来更新App。

CFBundleShortVersionString或CFBundleVersion在应用程序更新之间保持不变?

没有。(元问题,这里的用例是什么?如果你已经以任何方式编辑了有效载荷,构build将会不同,用户将会想知道它)。 如果你尝试,你会看到像下面的错误信息:

错误消息

还是他们比较以前各自的数字,以确保数字更大的数字与新版本的应用程序上传?

是。 使用semver.org标准。

CFBundleShortVersionString和CFBundleVersion的数字是否相互比较?

没有。

CFBundleShortVersionString是版本的公共“名称”(例如:“2.5”或“3.8.1”)。 您必须在每个版本中增加它。

CFBundleVersion是私有版本号。 在AppStore上没有看到。 您必须在每次上传时增加它。 这意味着如果你在上线之前拒绝了一个二进制文件,并且你想上传一个新的二进制文件,它将会有相同的CFBundleShortVersionString,但是必须有一个更高的CFBundleVersion (例如:public“2.5”,private“2.5”,然后二进制拒绝,并重新上传私人“2.5.1”)

2016年11月16日修改:

/ \代码中的NSURLConnection发送的User-Agent头中也使用CFBundleVersion属性(以及CFBundleName )。

例如:如果CFBundleNameMyAppCFBundleVersion是2.21,那么你的代码使用NSURLConnection直接发送的任何编程HTTP查询将embedded标题:

User-Agent: MyApp/2.21 CFNetwork/... Darwin/...

(这不适用于由UIWebView自动发出的请求)。

CFBundleVersion和CFBundleShortVersionString必须大于应用程序的上一个版本号。 保持相同是一个好习惯。 你应该在你的-info.plist中find它们。

当您尝试在组织者中validation应用程序时,如果其中任何一个都没有增加,则会发出错误。 昨天晚上发生在我身上。

在向App Store发布新版本时, 必须增加CFBundleVersionCFBundleShortVersionString

此外,其中一个string必须与iTunes Connect中指定的版本匹配。

Xcode Organizer Validator错误:必须增加版本号。

这个问题包括Xcode Organizer的validation器的上述屏幕截图,当CFBundleVersionCFBundleShortVersionString没有增加时,拒绝validation应用程序。

  • 这个包是无效的。 Info.plist文件中的密钥CFBundleVersion [1.0]的值必须包含比先前上载的版本[1.134]更高的版本。

  • 这个包是无效的。 Info.plist文件中的键CFBundleShortVersionString [1.0]的值必须包含比先前上载的版本[1.134]更高的版本。

validation器还会抛出一个错误,certificate其中一个string必须与iTunes Connect上创build的应用程序的版本相匹配。

  • 版本不匹配。 Info.plist中的CFBundleVersion ['1.0']和CFBundleShortVersionString ['1.0']都不匹配在iTunes Connect ['1.4']中设置的应用程序的版本。

你需要增加两个

上传新版本时,您需要在iTunes Connect上创build一个新版本,该版本会自动高于以前的版本。 iTunes Connect上的这个版本将期待一个具有相同版本号的二进制文件,因此需要增加CFBundleShortVersionString

如果更新版本,但忘记增加CFBundleVersion ,则在上传过程中会遇到错误。 请参阅pkamb的答案和截图。

有关CFBundleShortVersionStringCFBundleVersion详细信息,请参阅: https : //stackoverflow.com/a/31921249/936957

AFAIK,我的头顶,你只需要增加构build号CFBundleVersion 。 增加短版本string不一定需要,尽pipe你可能应该增加它,因为它告诉用户应用程序是新的。 苹果公司表示,编号应该遵循传统的软件版本规范,但是如果您尝试重新上传已经存在的版本,iTunes Connect可能会抱怨。

长话短说,它可能工作,但可能不会。