Xcode版本(CFBundleShortVersionString)和内部版本(CFBundleVersion)之间的区别


94

应用目标摘要

在Xcode 4中,我将其作为目标摘要:

“版本”输入对应CFBundleShortVersionString于info.plist文件,而“构建”输入对应于CFBundleVersion

两者有什么区别?我看到互联网上很多人都希望为两者都赋予相同的价值,我的怀疑是向后兼容。

我有两个问题:

1)如果我从头开始,那么对您的应用进行版本控制的最佳实践是什么?

2)在我的应用程序的所有先前发行版中,我仅使用CFBundleVersion。为了不弄乱升级过程,我是否应该像以前一样继续增加CFBundleVersion,还是有可能切换到“正确的方式”?


3
这是stackoverflow.com/questions/6851660/version-vs-build-in-xcode-4的副本,但此版本可能更好(有截图)。
丹尼尔·迪基森

您需要做些什么来在“摘要”中显示“生成”字段吗?我只看到一个Version,但是没有Build字段。
肯尼·怀兰德

Answers:


68

Apple文档“信息属性列表键参考”表示CFBundleShortVersionString代表发行版本,而CFBundleVersion代表任何版本(已发布或未发布)。另外,CFBundleShortVersionString可以本地化,尽管我不知道为什么要这么做,因为他们说这应该是“由三个句点分隔的整数组成的字符串”。对于发布版本,使两个数字相同是合理的。对于开发版本,您可以在上加上其他内容CFBundleVersion,也可以是其他点和整数。


但是,如果我目前一直使用1.3.1作为我的CFBundleVersion东西,而没有使用我的东西CFBundleShortVersionString,并且我想切换为使用CFBundleVersion来代表内部版本,那么我至少需要以大于1.3.1的整数开头,对吗?还是只是在进行麻烦的切换?
菲利普·沃尔顿

版本(CFBundleShortVersionString)是提交给Apple唯一重要的事情。Build(CFBundleVersion)可以在开发中随意使用,也可以在应用程序中显示。如果您愿意,请使用八进制(以8为基数)并以12反向进行迭代。
nekno 2011年

16
nekno:实际上CFBundleVersion对苹果很重要。检查Apple提交应用程序时给出的以下错误消息:“您上传的二进制文件无效。Info.plist文件中的密钥CFBundleVersion必须包含比先前上传的版本更高的版本。”
malhal 2012年

10
某些国家/地区使用西方阿拉伯语以外的其他数字,例如东方阿拉伯语(٠,١,٢,٣,٤,٥,٦,٧,٨,٩)或希伯来语(א,ב,ג,ד,ה,ו,ז,ח,ט)-这两个也从右到左书写。还有更多其他数字系统(请参阅en.wikipedia.org/wiki/Category:Numerals)因此,我猜测这就是Apple所谓的“可本地化”版本号。
Ruslan Ulanov

顺便说一句,不需要标点的三位数。我一直在使用日期时间值,例如201606070620在发货的iOS 7-8-9应用程序中的两个值。
罗勒·布尔克

3

关于JWWalker的问题,为什么要本地化CFBundleShortVersionString,那就是十进制分隔符。例如,在十进制分隔符实际上是逗号的语言环境中,版本“ 1.5”将为“ 1,5”。


30
IMO,您不需要本地化版本号。我居住在小数点分隔符是逗号(德国)的区域,并且我习惯用点号分隔数字。实际上,我不记得曾经见过带有逗号的版本号。
Christian Specht

2
我也生活在使用逗号作为小数点分隔符的区域,尽管1,3,1是一个奇数,但1.3.1似乎更好。
Lucien 2012年

1
我认为这意味着您可以针对不同地区使用不同版本的应用程序。1.2.1> en.lproj 1.2.2> fr.lproj虽然在本地化文件时会复制整个plist,所以复制的两个版本号都可以被“本地化”
brian.clear 2012年

1

快速解决:

只需将添加CFBundleShortVersionString到plist文件并编辑您的版本。

  1. 显示你的 InfoPlist.strings
  2. 突出显示它并粘贴下面的代码(假设其处于源代码模式)

{“ CFBundleShortVersionString” =“ 1.1”;}

  1. 将1.1更改为新版本。
  2. 生成并提交,没有更多错误!

在此处输入图片说明


1

请参阅有关上载二进制文件的Apple文档。

为版本和内部编号:iTunes Connect从二进制文件中提取其预发行版本号和内部版本号。预发行版本号是Xcode版本号,或者是Info.plist中的“捆绑版本字符串,短”键。内部版本号是Xcode内部版本号,或者是Info.plist中的“捆绑版”键。预发行版本号和内部版本号将显示在“预发行”选项卡上,如查看内部版本中所述。

上载应用程序的二进制文件

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.