我在尝试提交应用时收到此警告:
警告ITMS-9000:"此捆绑包无效。密钥的值 CFBundleVersion [3.3.9.2014.08.20]在info.plist文件中必须是a 句点分隔列表最多三个非负整数。"
这是我在使用该版本控制格式进行大量提交后第一次看到此内容。
CFBundleVersion有什么变化吗?
我猜测三并不总是存在?或苹果刚开始警告我们呢?
来自Apple docs:
CFBundleVersion
CFBundleVersion(String - iOS,OS X)指定构建版本 捆绑的编号,用于标识迭代(已释放或 捆绑的未发布的。构建版本号应该是一个字符串 由三个非负的,周期分隔的整数组成 第一个整数大于零。字符串应该只包含 数字(0-9)和句点(。)字符。前导零被截断 从每个整数中将被忽略(即1.02.3是等价的 到1.2.3)。此密钥不可本地化。
修改
显然CFBundleVersion已更改,因为您可以看到here。 遗憾的是,我需要搜索WayBackMachine这样的东西,而Apple" Document Revision History"什么也没说。
答案 0 :(得分:11)
这发生在我从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
答案 1 :(得分:7)
看起来苹果已经采取了更进一步的措施并使这个错误(不确定何时发生这种情况,但我正在使用Xcode 6)。尝试提交带有小于2小数点的CFBundleShortVersionString
的应用程序将导致存档提交到iTunes Connect现在失败。
您现在必须拥有CFBundleShortVersionString
1.0
,4.5.2
等成功提交您的申请。可能有点烦人,但我认为这是有道理的。
答案 2 :(得分:5)
建议的最佳做法是现在为CFBundleShortVersionString
和CFBundleVersion
使用单独的值
CFBundleShortVersionString
的最多3个组件(例如:4.2.3)CFBundleVersion
CFBundleShortVersionString
是App Store上显示的版本。
CFBundleVersion
需要针对您上传的每个版本进行更改。
例如:如果您上传新版本(4.2.3)以便在iTunesConnect上进行审核以及是否被拒绝。您需要为具有不同CFBundleShortVersionString
值的相同版本号(CFBundleVersion
= 4.2.3)重新提交新版本
答案 3 :(得分:2)
如果您使用的是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
以处理非数字捆绑版本:
Installing ReactiveCocoa (4.0.4-alpha-1)
(...)
Fix version of Pod ReactiveCocoa: 4.0.4-alpha-1 => 4.0.4
ReactiveCocoa 4的输出示例:
def new_button(link)
link_to link do
yield.html_safe if block_given?
end
end
答案 4 :(得分:1)
显然CFBundleVersion已更改,因为您可以看到here。 遗憾的是,我需要搜索WayBackMachine这样的东西,而Apple&#34; Document Revision History&#34;什么也没说。
答案 5 :(得分:0)
按照错误,然后在您的案例搜索中搜索CFBundleVersion:3.3.9.2014.08.20然后将其更改为3.3.9或3.4.0版本的正确版本,...(它必须大于旧版本)
答案 6 :(得分:0)
我遇到与-
相同的问题Blockquote
错误ITMS-90058:“此捆绑包无效。Info.plist文件中的CFBundleVersion键[ms-08-23]的值必须是一个由句点分隔的列表,该列表最多包含三个非负整数。” < / p>
Blockquote
在那里,我搜索了每个第三方框架Plist并在SAP库中找到了捆绑版本,作为 [ms-08-23] 。 我将其更改为三个非负整数即 3.0.0 的格式,并在每个SAP框架中均对其进行了更改- IT正常工作 。