首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >哪些iOS应用版本/内部版本号必须在应用商店发布时递增?

哪些iOS应用版本/内部版本号必须在应用商店发布时递增?
EN

Stack Overflow用户
提问于 2014-01-15 06:16:05
回答 10查看 110.8K关注 0票数 136

iOS应用程序的版本/构建字段包括:

版本“

  • CFBundleShortVersionString (String - iOS,OS X)指定捆绑包的发布版本号,该版本号标识应用程序的已发布迭代。发行版本号是由三个以句点分隔的整数组成的字符串。

  • " build“CFBundleVersion (String - iOS,OS X)指定捆绑包的内部版本号,它标识了捆绑包的迭代(已发布或未发布)。生成版本号应该是一个字符串,该字符串由三个非负的、以句点分隔的整数组成,第一个整数大于零。字符串应仅包含数字(0-9)和句点(.)人物。每个整数的前导零被截断并将被忽略(即,1.02.3相当于1.2.3)。此密钥不是localizable.

  • "iTunes连接版本号“:在iTunes连接上创建应用程序的新版本时指定的版本号。

我的问题是:

在将新版本的应用程序上传到连接和/或发布到应用程序商店时,需要使用哪些版本/内部版本号来递增iTunes?

在应用更新之间,“版本”CFBundleShortVersionString或“构建”CFBundleVersion可以保持不变吗?

苹果源代码的额外积分或上传无效版本/内部版本号时iTunesConnect显示的确切错误消息。

Android / Google实演说明:

引发这个问题的讨论是,谷歌Play商店中的一个安卓应用程序的公共“版本”需要递增,并且根本没有经过验证。android:versionName可以在不同版本、升级、降级之间保持不变,也可以是任意随机字符串,而不是看起来有效的“版本号”。

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

该值是一个字符串,因此您可以将应用程序版本描述为<major>.<minor>.<point>字符串、或绝对或相对版本标识符的任何其他类型的

Difference between versionName and versionNumber in Android

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

Apple文档

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

Apple Technical Note TN2420 - Version Numbers and Build Numbers

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2016-06-24 17:23:37

Apple Technical Note TN2420, Version Numbers and Build Numbers

摘要:

  • 该对(VersionBuild number)必须是唯一的。
    • 序列有效:(1.0.1,12) -> (1.0.1,13) -> (1.0.2,13) -> (1.0.2,14)

  • Version (CFBundleShortVersionString)必须按升序排列,order.
  • Build number (CFBundleVersion)必须按升序排列。

版本号和内部版本号检查表

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

  1. 对于您的应用程序的每个新版本,您需要发明一个新的版本号。此数字应大于您上次使用的版本号。尽管您可以为应用程序的任何特定版本提供多个版本,但您只需要为应用程序的每个新版本使用一个新的版本号。
  2. 您不能重复使用版本号。
  3. 对于您提交的每个新版本,您将需要发明一个新的内部版本号,其值大于您上次使用的内部版本号(对于该version).
  4. You,可以在不同的版本系列中重新使用内部版本号,但您不能在相同的版本系列中重新使用内部版本号。对于macOS应用程序,您不能在任何release train.

中重复使用内部版本号

根据检查表,下面的(Version, Build Number)序列也是有效的。

  • 案例:在不同的版本系列中重用Build Number。(注:不是 macOS应用程序)

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

票数 148
EN

Stack Overflow用户

发布于 2014-01-15 07:03:04

连接应与您提供的iTunes CFBundleShortVersionString版本号相匹配。它也是用户在App Store中查看您的应用程序时显示的版本号。

连接的版本号显示在存储中,并且该版本应与您稍后在iTunes

中输入的版本号相匹配。

Source

CFBundleVersion不会显示在应用程序商店中,但由iTunes用来确定应用程序的更新时间。

如果您更新构建字符串,如“设置版本号和构建字符串”中所述,iTunes会识别到构建字符串发生了更改,并正确地将新的iOS应用商店包同步到测试设备。

Source

更具体地回答你的问题...

将新版本的应用上载到应用商店时,需要递增哪些版本/内部版本号?

两者都有。一个显示在App Store中,另一个由iTunes用来更新应用程序。

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

不是的。(元问题,这里的用例是什么?如果您以任何方式编辑了有效负载,构建将会有所不同,并且用户会想要了解它)。如果您尝试,您将看到如下所示的错误消息:

,还是将它们与之前的相应数字进行比较,以确保新版本的应用程序上传的数字更大?

是。使用semver.org标准。

CFBundleShortVersionString和CFBundleVersion的数字是否以任何方式相互比较?

不是的。

票数 39
EN

Stack Overflow用户

发布于 2014-12-17 17:10:50

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

CFBundleVersion是私有build编号。在AppStore上看不到它。您必须在每次upload时增加该值。这意味着如果你在二进制文件上线之前拒绝了它,并且你想上传一个新的二进制文件,它将具有相同的CFBundleShortVersionString,但必须有更高的CFBundleVersion (例如:公有"2.5",私有"2.5",然后二进制拒绝,并重新上传私有"2.5.1")

2016年11月16日编辑:

还使用了CFBundleVersion属性(以及代码中由User-Agent发送的NSURLConnection标头中的)/

示例:如果CFBundleName为MyApp,CFBundleVersion为2.21,则代码使用NSURLConnection直接发送的任何编程MyApp查询都将嵌入头部:

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

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

票数 32
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21125159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档