CFBundleVersion必须是由三个非负整数组成的句点分隔列表(WARNING ITMS-9000)

我试图提交我的应用程序时收到此警告:

在这里输入图像说明

警告ITMS-9000:“这个包是无效的,在info.plist文件中,CFBundleVersion [3.3.9.2014.08.20]键的值必须是一个由三个非负整数组成的句点分隔列表。

这是我第一次以这种版本格式提交了很多意见之后。

CFBundleVersion有什么改变吗?

我猜这三个并不总是在那里? 或者苹果刚刚开始警告我们呢?

从苹果文档 :

CFBundleVersion

CFBundleVersion(String – iOS,OS X)指定包的版本号,它标识包的迭代(释放或未发布)。 构build版本号应该是一个由三个非负的,句点分隔的整数组成的string,第一个整数大于零。 该string应该只包含数字(0-9)和句点(。)字符。 前导零从每个整数中截断,将被忽略(即1.02.3相当于1.2.3)。 此密钥不可本地化。

编辑:

显然CFBundleVersion被改变了,你可以在这里看到。 我很遗憾,我需要在WayBackMachine上search类似的东西,而苹果的“文档修订历史”没有提到这件事。

这发生在我从Cocoapods使用的框架,这里是我如何解决它:

你需要在info.plist文件中find非标准的CFBundleShortVersionString。 我搜遍了所有这些,并在回购协议中find了这一点:

<key>CFBundleShortVersionString</key> <string>HEAD based on 1.0</string> 

改成这样:

  <key>CFBundleShortVersionString</key> <string>1.0</string> 

它的工作

Cocoapods开发者创build的这个方法也可以工作:

https://github.com/Jonge/Cocoapods-frameworks-version-number-fix

它看起来像苹果已经采取了这一步,使这个错误(不知道这是什么时候发生的,但我使用Xcode 6)。 尝试提交带有2个以上小数点的CFBundleShortVersionString的应用程序将导致归档提交到iTunes Connect以立即失败。

您现在必须具有CFBundleShortVersionString4.5.2等)才能成功提交您的应用程序。 可能有点烦人,但我想这是有道理的。

错误

build议的最佳做法是现在使用CFBundleShortVersionStringCFBundleVersion单独值

  • CFBundleShortVersionString 3分量最大值(例如:4.2.3)
  • 版本号CFBundleVersion

CFBundleShortVersionString是App Store上显示的版本。 CFBundleVersion将需要更改您上传的每个版本。

例如:如果您上传新版本(4.2.3)以在iTunesConnect上查看,并且被拒绝。 您将需要重新提交具有不同CFBundleVersion值的同一版本号( CFBundleShortVersionString = 4.2.3)的新版本

如果您使用CocoaPods ,请将此脚本添加到Podfile以处理非数字包版本:

 # fix for non numeric CocoaPods versions # https://github.com/CocoaPods/CocoaPods/issues/4421#issuecomment-151804311 post_install do |installer| plist_buddy = "/usr/libexec/PlistBuddy" installer.pods_project.targets.each do |target| plist = "Pods/Target Support Files/#{target}/Info.plist" original_version = `#{plist_buddy} -c "Print CFBundleShortVersionString" "#{plist}"`.strip changed_version = original_version[/(\d+\.){1,2}(\d+)?/] unless original_version == changed_version puts "Fix version of Pod #{target}: #{original_version} => #{changed_version}" `#{plist_buddy} -c "Set CFBundleShortVersionString #{changed_version}" "Pods/Target Support Files/#{target}/Info.plist"` end end end 

ReactiveCocoa 4的输出示例:

 Installing ReactiveCocoa (4.0.4-alpha-1) (...) Fix version of Pod ReactiveCocoa: 4.0.4-alpha-1 => 4.0.4 

显然,CFBundleVersion已经改变,你可以在这里看到。 我很遗憾,我需要在WayBackMachine上search类似的东西,而苹果的“文档修订历史”没有提到这件事。

按照错误,然后search下面的CFBundleVersion,在你的情况下search:3.3.9.2014.08.20然后将其更改为正确的版本,如3.3.9或3.4.0,…(它必须大于旧版本)