首页 > 解决方案 > 在旧 Xcode 的旧项目中使用新 Xcode 中构建的框架

问题描述

我有我的项目在 Xcode 10.1 和 Swift 3 中,我使用了 20 多个框架,直到几天前,当一些框架决定他们需要为 iOS 13 的关键错误发布修复程序时,一切都很好。所以当我更新我的 pod 和运行它说的我的项目

could not reparse object file in bitcode bundle: 'Invalid bitcode version (Producer: '1001.0.46.4.0_0' Reader: '1000.11.45.5_0')', using libLTO version 'LLVM version 10.0.0, (clang-1000.11.45.5)' for architecture arm64

好的,这意味着他们在更新的 Xcode 中构建他们的项目,然后我正在研究(我猜他们正在使用最后一个 10.3),然后我尝试在我的主要目标上将 bitcode 设置为 false,但猜测什么错误是相同的..

好的,所以我下载了他们的演示项目,这个关于 bitcode 的修复工作有效,所以我不确定我的项目有什么问题,为什么这个 bitcode = NO 不起作用。我只在我的主要目标上禁用了位码,我需要在其他地方或其他地方设置它吗?

不确定这是否相关,但我有 2 个 Xcode 并行 10.1 和 10.3

我这几天有这个问题。

我正在使用的这个应用程序是 Appboy-iOS-SDK。

标签: iosxcodebitcode

解决方案


我们在使用 Braze (Appboy) SDK 时遇到过类似的问题。

经过调查,我们发现此问题仅影响使用 Xcode 11 或更高版本构建的应用程序,因此无需更新 SDK,除非您计划使用 Xcode 11 构建和提交您的应用程序,即使在 iOS 之后也不需要13号发布。我们将 SDK 保留在旧版本,在这里没有发现任何问题。

如果您想更新,仍然使用 Xcode 10.x,您需要通过关闭位码来解决不匹配问题。为了取得成功,您需要在项目/工作区的配置和 Appboy-iOS-SDK 的配置中禁用它。如果您使用 Cocoapods 来管理依赖项,最好将其添加到您的 Podfile 中,这样它就不会在YES每次运行时重置pod install

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      if target.name == 'Appboy-iOS-SDK'
        config.build_settings['ENABLE_BITCODE'] = 'NO'
      end
    end
  end
end

综上所述,我认为答案是在您升级构建机器以使用 Xcode 11 时进行此升级。


推荐阅读