Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c Xcode版本(CbundleShortVersionString)和内部版本(CbundLeverVersion)之间的差异_Objective C_Xcode - Fatal编程技术网

Objective c Xcode版本(CbundleShortVersionString)和内部版本(CbundLeverVersion)之间的差异

Objective c Xcode版本(CbundleShortVersionString)和内部版本(CbundLeverVersion)之间的差异,objective-c,xcode,Objective C,Xcode,在Xcode 4中,我的目标摘要如下: “版本”输入对应于info.plist文件中的CbundleShortVersionString,“构建”输入对应于CbundleVersion 这两者有什么区别?我在互联网上看到很多人都想为这两者赋予同样的价值,我怀疑这是为了向后兼容 我有两个问题: 1) 如果我从零开始,那么对应用程序进行版本控制的最佳实践是什么 2) 在我的应用程序的所有早期版本中,我只使用了CFBundleVersion。为了不打乱升级过程,我应该继续以我以前的方式增加Cbundl

在Xcode 4中,我的目标摘要如下:

“版本”输入对应于info.plist文件中的
CbundleShortVersionString
,“构建”输入对应于
CbundleVersion

这两者有什么区别?我在互联网上看到很多人都想为这两者赋予同样的价值,我怀疑这是为了向后兼容

我有两个问题:

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


2) 在我的应用程序的所有早期版本中,我只使用了
CFBundleVersion
。为了不打乱升级过程,我应该继续以我以前的方式增加CbundleVersion,还是可以切换到“正确的方式”,假设存在?

苹果文档说,
CbundleShortVersionString
代表一个发布版本,而
CbundLeverVersion
表示任何构建,无论是否发布。另外,
CbundleShortVersionString
也可以本地化,尽管我不知道你为什么想本地化,因为他们说它应该是“由三个周期分隔的整数组成的字符串”。对于发布版本,使这两个数字相同是合理的。对于开发构建,您可能会在
CbundLeverVersion
上附加其他内容,可能是另一个点和整数。

对于JWWalker关于为什么要本地化CbundleShortVersionString的问题,这将是十进制分隔符。例如,在十进制分隔符实际上是逗号的区域设置中,“1.5”版本将是“1,5”。

快速修复:

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

  • 显示您的
    InfoPlist.strings
  • 突出显示它并将下面的代码粘贴到中(假设它处于源代码模式)
  • {“CbundleShortVersionString”=“1.1”}

  • 将1.1更改为任何新版本
  • 生成并提交,无更多错误

    请参阅苹果公司关于上传二进制文件的文档

    为版本和内部版本编号: iTunes Connect提取其预发布版本号和内部版本号 从二进制文件。预发布版本号是Xcode版本 编号,或Info.plist中的“Bundle version string,short”键。 内部版本号是Xcode内部版本号,或“捆绑版本” 输入Info.plist。预发布版本号和内部版本号 将显示在预发布选项卡上,如查看版本中所述


    这是的一个副本,但可能这个版本的说明更好(并且有一个屏幕截图)。您需要做些什么才能在摘要中显示Build字段?我只看到一个版本,但没有构建字段。但是如果我目前一直使用1.3.1作为我的
    CbundLeverVersion
    ,而没有任何东西作为我的
    CbundleShortVersionString
    ,我想切换到使用
    CbundLeverVersion
    来表示内部构建,那么我至少需要从一个高于1.3.1的整数开始,对吗?还是说做出这样的转换只是自找麻烦?版本(
    CbundleShortVersionString
    )是提交给苹果公司唯一重要的东西。构建(
    CbundLeverVersion
    )供您在开发中随意使用,或在应用程序中显示。使用八进制(以8为基数),如果你愿意的话,以12为倒数进行迭代。奈克诺:实际上,CbundLeversion对苹果来说才是最重要的。检查苹果在提交应用程序时给出的错误消息:“您上传的二进制文件无效。Info.plist文件中的CfBundLeverVersion键必须包含比先前上传版本更高的版本。”一些国家使用西方世界使用的现代阿拉伯语以外的数字,如东方阿拉伯语(٠)‎, ١‎, ٢‎, ٣‎, ٤‎, ٥‎, ٦‎, ٧‎, ٨‎, ٩‎), 或者希伯来语(א,ב,ג,ד,ה,ז,ח,ט)-这两个词也是从右到左写的。还有很多其他的数字系统(见),所以我猜这就是苹果所谓的“本地化”的意思版本号。顺便说一句,带标点符号的三位数字是不需要的。我一直在使用日期-时间值,例如装运iOS 7-8-9应用程序中的两个值
    201606070620
    。IMO您不需要本地化版本号。我生活在十进制分隔符为逗号的地区(德国),我习惯于用点分隔版本号。事实上,我不记得我见过用逗号分隔的版本号。我也生活在一个使用逗号作为小数分隔符的地区,虽然1,3,1是一个很奇怪的值,但1.3.1似乎要好得多。我想这意味着你可以为不同的地区使用不同版本的应用程序。1.2.1>en.lproj1.2.2>fr.lproj尽管当您本地化文件时会复制整个plist,因此两个版本号都会被复制,以便“可以本地化”