启用位代码时生成错误;ld: -bundle 和 -bitcode_bundle (Xcode 设置 ENABLE_BITCODE=YES) 不能一起使用

0 xcode ios bitcode

我有一个 pod 项目,其中包含一个演示 pod 用法的示例。在示例和 Pod 目标上,位码启用设置均设置为 yes。以下是示例的Podfile:

use_frameworks!
platform :ios, '10.0'

target 'MyPod_Example' do
  pod 'MyPod', :path => '../'

  target 'MyPod_Tests' do
    inherit! :search_paths


  end
end
Run Code Online (Sandbox Code Playgroud)

该示例应用程序在模拟器上运行良好,但是当尝试在 iPhone 6S 上运行它时,我收到以下构建错误:

ld:-bundle 和 -bitcode_bundle(Xcode 设置 ENABLE_BITCODE=YES)不能一起使用 clang:错误:链接器命令失败,退出代码 1(使用 -v 查看调用)。

我该如何解决?我的另一个项目有相同的 pod,但从其存储库下载 pod 在 iPhone 上运行良好,并且启用了位码。下面显示了可以运行的应用程序的 Podfile 结构:

source '<my pod spec repo>'
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '10.0'

target 'MyPodTest' do

  use_frameworks!

  # Pods for MyPodTest
    pod 'MyPod'

  target 'MyPodTestTests' do
    inherit! :search_paths
    # Pods for testing
  end

  target 'MyPodTestUITests' do
    inherit! :search_paths
    # Pods for testing
  end

end
Run Code Online (Sandbox Code Playgroud)

ste*_*esu 7

错误消息中描述了-bitcode_bundle传递给的标志( “Xcode 设置 ENABLE_BITCODE=YES”),但该标志并未描述,这可能会使此过程变得混乱且难以调试。ld-bundle

如果您查看此错误之前的行,您可能会看到两个重要的错误:

  • WriteAuxiliaryFile /Users/YOURUSER/Library/Developer/Xcode/DerivedData/YOURPROJECT-xxxxx/Build/Intermediates.noindex/YOURPROJECT.build/Release-SDK/TARGET.build/DerivedSources/TARGET _vers .c(在项目的目标“TARGET”中) “你的项目”)
  • CompileC /Users/YOURUSER/Library/Developer/Xcode/DerivedData/YOURPROJECT-xxxxx/Build/Intermediates.noindex/YOURPROJECT.build/Release-SD/TARGET.build/Objects-normal/arm64/TARGET _vers .o /Users/YOURUSER /Library/Developer/Xcode/DerivedData/YOURPROJECT-xxxxx/Build/Intermediates.noindex/YOURPROJECT.build/Release-SDK/TARGET.build/DerivedSources/TARGET_vers.c 普通arm64 c com.apple.compilers.llvm.clang.1_0 .compiler(在项目“YOURPROJECT”的目标“TARGET”中)

这两行是你问题的真正核心。您的包以前没有二进制文件(只有 PNG、XIB 和其他资源),现在有一个二进制文件。一个由 Xcode创建的。由于此二进制文件是作为资源包目标的一部分创建的,因此它使用该-bundle标志编译为 CFBundleExecutable,该标志与ENABLE_BITCODE. 不过,您应该首先阻止生成此二进制文件,而不是禁用位码。

该二进制文件由Apple 通用版本控制创建。要摆脱它,请转到构建设置选项卡(在资源包目标上),单击“全部”按钮以查看所有设置,然后搜索“版本控制系统”。将其从“Apple Generic”更改为“None”。资源包不正确支持版本控制。