繁体   English   中英

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

[英]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现在失败。

现在,您必须拥有CFBundleShortVersionString1.04.5.2等,以成功提交您的应用程序。 可能有点烦人,但我认为这是有道理的。

错误

建议的最佳做法是现在为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这样的东西,而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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM