CFBundleVersion必须是一个以句点分隔的列表,最多包含三个非负整数(警告ITMS-9000)

时间:2014-08-21 05:27:09

标签: ios xcode build itunesconnect

我在尝试提交应用时收到此警告:

enter image description here

  

警告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"什么也没说。

7 个答案:

答案 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.04.5.2等成功提交您的申请。可能有点烦人,但我认为这是有道理的。

Error

答案 2 :(得分:5)

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

  • 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正常工作