在旧 Xcode 的旧项目中使用新 Xcode 构建的框架

Using framework builded in new Xcode in my old project in old Xcode

我在 Xcode 10.1 和 Swift 3 中有我的项目,我正在使用 20 多个框架,一切都很好,直到几天前一些框架决定他们需要发布修复iOS 13 的严重错误。因此,当我更新我的 pods 和 运行 我的项目时,它说

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 Xcodes 并行 10.1 和 10.3

我这几天遇到这个问题

我正在使用的这款应用是Appboy-iOS-SDK.

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

经过调查,我们发现此问题仅影响使用 Xcode 11 或更高版本构建的应用,因此无需更新 SDK,除非您计划使用 Xcode11,释放iOS13后也不需要。我们保留旧版本的 SDK,未发现任何问题。

如果您无论如何都想更新,仍然使用 Xcode 10.x,您需要通过关闭位码来解决不匹配问题。为了成功,您需要在 project/workspace 和 Appboy-iOS-SDK 的配置中禁用它。如果您使用 Cocoapods 来管理依赖项,您最好将它添加到您的 Podfile 中,这样每次您 运行 pod install:[=13 时它都不会重置为 YES =]

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.

进行此升级