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以立即失败。
您现在必须具有CFBundleShortVersionString
如4.5.2
等)才能成功提交您的应用程序。 可能有点烦人,但我想这是有道理的。
build议的最佳做法是现在使用CFBundleShortVersionString
和CFBundleVersion
单独值
-
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,…(它必须大于旧版本)