iOS应用程序的版本/内部版本字段包括:

  • "Version"CFBundleShortVersionString(String-iOS,OS X)指定Bundle 包的发布版本号,它标识应用程序的已发布迭代.发布版本号是一个由三个周期分隔的整数组成的字符串.

  • "Build"CFBundleVersion(String-IOS,OS X)指定Bundle 包的内部版本号,该版本号标识Bundle 包的迭代(已发布或未发布).内部版本号应该是由三个非负的、以句点分隔的整数组成的字符串,其中第一个整数大于零.字符串应仅包含数字(0-9)和句点(.)人物.每个整数的前导零被截断并将被忽略(即1.02.3等同于1.2.3).此键不可本地化.

  • "iTunes Connect Version Number":在iTunes Connect上创建应用程序新版本时指定的版本号.

我的问题是:

当应用程序的新版本上传到iTunes Connect和/或发布到App Store时,哪个版本/内部版本号是required to be incremented

在应用程序更新之间,"版本"CFBundleShortVersionString或"构建"CFBundleVersion能保持不变吗?

上传无效版本/内部版本号时,Apple sources或iTunesConnect会显示准确的错误消息的额外分数.


Android/Google Play注意事项:

引发这个问题的讨论是,Google Play Store中的Android应用程序的公共"版本"not确实需要增加,并在no way中进行了验证.android:versionName可以在不同版本、升级、降级之间保持不变,也可以是任意随机字符串,而不是看起来有效的"版本号".

android:versionName-一个字符串值,表示应用程序代码的发布版本,应该向用户显示.

该值是一个字符串,因此您可以将应用程序版本描述为<major>.<minor>.<point>个字符串,or as any other type个绝对或相对版本标识符.

Difference between versionName and versionNumber in Android

android:versionCode被强制为释放时递增的整数.


Apple文档

正如在the newly accepted answer中指出的那样,苹果最近发布了一份技术说明,详细说明了他们的版本和内部版本号方案:

Apple Technical Note TN2420 - Version Numbers and Build Numbers

推荐答案

Apple Technical Note TN2420, Version Numbers and Build Numbers

总结:

  • The pair (Version, Build number) must be unique.
    • The sequence is valid: (1.0.1, 12) -> (1.0.1, 13) -> (1.0.2, 13) -> (1.0.2, 14) ...
  • Version(CFBundleShortVersionString)必须按升序排列.
  • Build number(CFBundleVersion)必须按升序排列.

版本号和版本号 list

以下是在向App Store提交新版本时可以判断的一些事项.确保您的版本号和内部版本号设置正确将有助于您避免因配置不当而自动拒绝您的应用程序.

  1. 对于应用程序的每个新版本,你都需要发明一个新的版本号.此数字应大于您使用的上一个版本号.尽管你可以为你的应用程序的任何特定版本提供多个版本,但你只需要为你的应用程序的每个新版本使用一个新版本号.
  2. 不能重复使用版本号.
  3. 对于您提交的每个新构建,您将需要发明一个新的内部版本号,其值大于您上次使用的内部版本号(对于同一版本).
  4. 您可以在不同的版本系列中重复使用内部版本号,但不能在同一版本系列中重复使用内部版本号.For macOS apps, you cannot re-use build numbers in any release train.

根据核对表,下面的(Version, Build Number)个顺序也是有效的.

  • case :在不同的版本系列中重用Build Number.(注:NOT款MacOS APP)

    (1.0.0, 1) -> (1.0.0, 2) -> ... -> (1.0.0, 11) -> (1.0.1, 1) -> (1.0.1, 2)

Ios相关问答推荐

找不到com.google.vr:sdk-base:1.180.0

崩溃到初始化react -带网页的原生iOS应用程序

如何使用UICollectionView Compositionallayout在UIKit中正确渲染远程图像

Firebase SDK 10+—无法安装软件包

如何从ipad获取用户定义的设备名称,IOS版本应大于16在flutter

Nomb iOS 17.4.0中崩溃

当重新呈现UI时,嵌套的 struct 值如何与@Observable一起工作?

TrueDepth摄像机像素距离不准确

如何将Safari调试器附加到Turbo-iOS原生应用中的模拟器

在SwiftUI中插入绘制重复形状

RFID scanner 的蓝牙服务 UUID?

将 URLCache 子类与 URLSession 一起使用

NSOperation 有延迟 - 它是异步的还是同步的?

在 iPad 上删除列表的顶部和底部行

iOS,Swift 5,AppDelegate open url / .onOpenUrl - 如何找到调用我的自定义方案的调用应用程序

使用 RxDatasources 作为数据源时如何填充自定义页眉/页脚视图

滑动列表项以获取更多选项(Flutter)

UITableView 背景 colored颜色 在 iPad 上总是白色

以编程方式 Select UITextField 中的所有文本

iOS:以编程方式制作屏幕截图的最快、最高效的方法是什么?