[英]CFBundleShortVersionString must be a period-separated list of most three non-negative integers
[英]CFBundleVersion must be a period separated list of at most three non-negative integers (WARNING ITMS-9000)
我在尝试提交我的应用时收到此警告:
警告ITMS-9000:“此捆绑包无效.info.plist文件中密钥CFBundleVersion [3.3.9.2014.08.20]的值必须是一个以句点分隔的列表,最多包含三个非负整数。”
这是我在使用该版本控制格式进行大量提交后第一次看到这个。
关于CFBundleVersion有什么变化吗?
我猜这三个并不总是在那里? 还是苹果刚开始警告我们呢?
来自Apple文档 :
CFBundleVersion
CFBundleVersion(String - iOS,OS X)指定捆绑包的构建版本号,该版本号标识捆绑包的迭代(已发布或未发布)。 构建版本号应该是由三个非负的,周期分隔的整数组成的字符串,第一个整数大于零。 该字符串应仅包含数字(0-9)和句点(。)字符。 前导零从每个整数中截断,将被忽略(即1.02.3相当于1.2.3)。 此密钥不可本地化。
编辑:
显然CFBundleVersion已经改变,你可以在这里看到。 令人遗憾的是,我需要搜索WayBackMachine这样的东西,而Apple的“文档修订历史”却没有说明这一点。
这发生在我从Cocoapods使用的框架中,这是我如何修复它:
您需要在info.plist文件中找到非标准的CFBundleShortVersionString。 我搜索了所有这些并在其中一个回购中发现了这个:
<key>CFBundleShortVersionString</key>
<string>HEAD based on 1.0</string>
将其改为:
<key>CFBundleShortVersionString</key>
<string>1.0</string>
它起作用了
由Cocoapods开发人员创建的此方法也适用:
https://github.com/Jonge/Cocoapods-frameworks-version-number-fix
看起来苹果已经采取了更进一步的措施并使这个错误(不确定何时发生这种情况,但我正在使用Xcode 6)。 尝试使用带有超过2个小数点的CFBundleShortVersionString
提交应用程序将导致存档提交到iTunes Connect现在失败。
现在,您必须拥有CFBundleShortVersionString
像1.0
, 4.5.2
等,以成功提交您的应用程序。 可能有点烦人,但我认为这是有道理的。
建议的最佳做法是现在为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这样的东西,而Apple的“文档修订历史”却没有说明这一点。
按照错误,然后搜索CFBundleVersion,在您的案例搜索中:3.3.9.2014.08.20然后将其更改为正确的版本,如3.3.9或3.4.0,...(它必须大于旧版本)
我得到了同样的问题 -
大段引用
ERROR ITMS-90058:“此捆绑包无效.Info.plist文件中密钥CFBundleVersion [ms-08-23]的值必须是一个以句点分隔的列表,最多包含三个非负整数。”
大段引用
在我用每个第三方框架Plist和SAP库搜索后,我发现Bundle版本为[ms-08-23] 。 我把它改成了三个非负整数格式, 即 3.0.0 ,我在每个SAP框架中都改变了它 - IT Worked 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.