【问题标题】:CFBundleVersion must be a period-separated listCFBundleVersion 必须是一个以句点分隔的列表
【发布时间】:2015-10-22 21:05:23
【问题描述】:

我在将构建上传到 iTunes Connect 时确实遇到了问题。我总是收到以下错误

我的一般项目设置如下所示

我也在我的项目中使用 cocoapods,但之前从未收到此错误,并且我已经上传了几个构建版本。我不知道[1443188838-89]这个奇怪的数字是从哪里来的。

在信息选项卡上,捆绑版本对我来说也很好

以及 info.plist 作为源代码看起来不错

非常感谢任何帮助。

【问题讨论】:

  • 如果您查看“信息”选项卡而不是“常规”选项卡,您是否发现“捆绑版本字符串,短”条目或任何其他条目有什么奇怪的地方?
  • 点击进入字段,Cmd + a,删除。再次输入。
  • 已经用截图更新了我的问题,还是同样的错误
  • 呃。好吧,我认为 Xcode 期望内部版本号是一个没有句点的整数,所以使用“1.0.0”可能会混淆验证过程?
  • @TomHarrington 我也尝试过只使用单个版本号,例如“1”

标签: ios xcode swift app-store-connect


【解决方案1】:

好的,所以在这个问题上花了很多时间后,我终于可以解决它了。

检查所有您的 Info.plist 文件是否有错误的CFBundleVersion 编号。浏览所有 Cocoapods 静态框架及其捆绑包(右键单击 - 显示包内容)。在我的情况下,它是 Netverify (Jumio) 框架和捆绑包中不正确的 CFBundleVersion 键。 (与错误消息中显示的相同)。

我刚刚将其更改为有效的密钥,例如 1.0.0,现在它可以工作了!

【讨论】:

    【解决方案2】:

    你是对的,问题是非数字 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
    

    【讨论】:

      【解决方案3】:

      我也遇到过这个问题,即使是已经上传并发布到 TestFlight 内部测试的构建版本。出于同样的原因,它不允许我向外部测试人员发布版本字符串必须是由句点分隔的三个数字。

      我在 Swift 中使用 Cocoapods 构建框架,并在我的项目中进行了搜索,发现 RxSwift 的 Info.plist 的版本字符串设置为“2.0.0-alpha”。谢天谢地,我还没有开始大量使用它,所以我能够删除 pod 并成功提交而没有问题。您应该能够修改有问题的 pod 的版本字符串以使您的提交通过(尽管这显然不理想)。

      我不知道这是 Apple 服务中的错误还是新政策,但无论哪种方式都很痛苦。

      【讨论】:

      • 我浏览了 pods 文件夹中的所有 info.plist 文件,似乎几乎每个 pod 都使用<key>CFBundleVersion</key><string>${CURRENT_PROJECT_VERSION}</string> 来设置 CFBundleVersion
      【解决方案4】:

      我的解决方案是在 Podfile 中更新 pod SVWebViewController:

      来自

      pod SVWebViewController, :HEAD
      
      //Info.plist
      <key>CFBundleShortVersionString</key>
      <string>HEAD 1.0</string>
      

      pod SVWebViewController
      
      //Info.plist
      <key>CFBundleShortVersionString</key>
      <string>1.0</string>
      

      此更新更改了此特定 pod 的 Info.plist 文件。感谢 user1463853 的提示。

      【讨论】:

        猜你喜欢
        • 2014-05-04
        • 2014-10-14
        • 2014-11-05
        • 2016-01-22
        • 2012-04-03
        • 2023-01-16
        • 2010-10-11
        • 2023-03-15
        • 2023-03-16
        相关资源
        最近更新 更多