iTunes Connect中的"版本号","捆绑版本",Xcode中的"捆绑版本字符串"之间有什么区别?

eug*_*ene 90 iphone version

Apple的doc可能更清楚如何提交更新版本.

正如标题中所说,有什么区别

  1. itunes connect中的版本号(提交更新时必须提供的版本号)
  2. xcode中的捆绑版本
  3. 捆绑版本字符串,简短

它们有任何关联吗?

Fab*_*ser 132

是的,他们是相关的.它们都是指您的应用程序的版本.

  • iTunes Connect
    这是App Store中显示的版本号; 这必须是纯粹的版本号1.2.3

  • 捆绑版本(CFBundleVersion)
    这不需要是纯版本号.这可能是12345或类似的东西1.2.3 (Build 12345AB).例如,这在Mac OS X应用程序的"关于"窗口中显示,通常更像是"构建号"而不是"版本号".

  • Bundle Version String(CFBundleShortVersionString) 此值用作"真实"版本号.这必须iTunes Connect中的版本使用相同的字符串.

更新:
正如@snlehton所指出的,CFBundleVersion必须是一个纯版本号,就像1.2.3你想将你的应用程序上传到(iOS)App Store时一样.

  • **这是错误的**CFBundleVersion需要用于xyz,否则上传构建将失败![链接](http://www.dribin.org/dave/blog/archives/2006/08/02/versioning_os_x_apps/) (17认同)
  • 对于**测试**,您将bundle版本字符串设置为最终版本号,如`1.2.3`,然后为每个版本增加bundle版本. (3认同)
  • 1235的CFBundleVersion在这里,没有问题 (3认同)
  • 这里的混淆是因为CFBundleShortVersionString是可选的,当它被设置时,它会改变CFBundleVersion的用途.如果仅包括CFBundleVersion,那么它必须是公共版本号,例如1.0.但是,如果同时设置了CFBundleVersion和CFBundleShortVersionString,那么CFBundleShortVersionString现在必须是公共版本号,例如1.0.现在CFBundleVersion变为内部版本号,通常是一个整数,例如374629.希望这会清除它. (3认同)
  • 我最近使用带有"1.0.2 RC3"的CFBundleVersion提交了一个构建版本,它反弹并显示错误消息:"软件包无效.Info.plist文件中的密钥CFBundleVersion必须是一个以句点分隔的非负整数列表." 我认为nn.n.nxnnn是正确使用的格式,但尚未尝试过. (2认同)
  • 不,只有CFBundleShortVersionString会在iTunes和设备上显示. (2认同)

mal*_*hal 25

是的,它们是相关的,但它们的定义取决于它们的使用方式.

  • iTunes Connect版本

    始终必须是版本号,例如1.0

使用模式1 - 仅设置CFBundleVersion

  • 捆绑版本(CFBundleVersion)

    必须是版本号,例如1.0.必须与iTunes Connect版本匹配.

使用模式2 - 设置CFBundleVersion和CFBundleShortVersionString

  • 捆绑版本(CFBundleVersion)

    必须是内部版本号,例如像435163这样的单个整数.

  • 捆绑短版本字符串(CFBundleShortVersionString)

    必须是版本号,例如1.0.必须与iTunes Connect版本匹配.

使用模式2是最好的方法.以下是应用升级路径的一些示例数字:

CFBundleShortVersionString CFBundleVersion 
1.0                        1
1.0.1                      2
1.0.2                      3
1.2                        5  (build 4 was a beta and never released publicly)
1.2.1                      6
Run Code Online (Sandbox Code Playgroud)

关于版本号的额外说明:如果您向应用程序提交次要更新(例如错误修复),则必须永远不要错过版本号中的句点,例如始终使用1.0.1和从不1.01,否则您将无法使用将来某些版本号,因为无法增加它们.

  • 仅此表就是解释这两个数字如何相关并在实践中使用的最佳方法.谢谢. (2认同)

may*_*uur 12

是的,他们都是相关的.

版本号在itunesconnect是您需要提供的版本号.例如,2.1.1或3.1.2等.这也应该等于CFBundleShortVersionString.

捆绑版本在Xcode中(CFBundleVersion)仅代表构建编号,用于标识应用程序的迭代(已发布或未发布).

Bundle versions string,short(CFBundleShortVersionString)是一个由三个由点分隔的整数组成的数字.第一个代表应用程序的任何主要更新,例如实现新功能或主要更改的更新.第二个整数表示实现不太突出的功能的修订.第三个整数表示维护版本.

  • 实际上,"Bundle versions string,short"不需要是由点分隔的三个数字.我认为"1"和"1.1"也是有效的. (3认同)

apo*_*ute 11

关注CFBundleVersion.它不仅仅是生产版本号.Apple在二进制上载过程中会检查此值,并且可能会失败.

要确保你设置CFBundleVersion与价值CFBundleShortVersionString当你建立你的释放的提交.

看到这篇文章

  • 这不正确,`CFBundleVersion`不必匹配`CFBundleShortVersionString`.例如,如果您查看Chrome的当前.ipa文件(现在在应用商店中),对于`CFBundleVersion`,它们具有"34.0.1847.18",对于`CFBundleShortVersionString`,它们具有"34.1847.18". (9认同)
  • 没有文档说CFBundleVersion和CFBundleShortVersionString应该是相同的. (6认同)
  • 这是正确的信息,接受的答案实际上是错误的. (3认同)

aha*_*ash 8

接受的答案是要走的路 - 只需添加这个作为例子.

对于我们的上一个版本,需要"Bundle Version String,short",我继续将它与Bundle版本号(我们的应用程序为1.2.8)进行匹配.

然后,我启用了Testflight,并使我们的内部测试人员可以使用Apple审核版(1.2.8).然而,测试人员发现需要修复的问题,我们删除了二进制文件.上传新版本时,我们收到错误消息,指示已上载构建版本.

在阅读了几个SO链接和Apple文档之后,我的理解是制作捆绑版本:1.2.8.001,同时保持bundle-version-short的方式.如果需要新的构建,我们将bundle-version增加到1.2.8.002.

注意:上传已被接受,并且构建在预发布下显示为"1.2.8.001".版本号仍为1.2.8.