无法为arm64

时间:2018-01-03 11:32:35

标签: ios xcode bitcode

当我设置启用Bitcode'时,我遇到了构建错误。到了“是”'在我目前正在进行的项目的构建设置中。错误是:

  

ld:无法生成bitcode包,因为' /Users/nick/Library/Developer/Xcode/DerivedData/PROJECTNAME-esksqmlmtpqewpbktcqeqloackeu/Build/Intermediates.noindex/PROJECT.build/Debug-iphoneos/PROJECTNAME.build /Objects-normal/arm64/main.o'没有完整的bitcode。 bitcode的所有目标文件和库必须从Xcode存档或安装构建文件生成&#39 / /Users/nick/Library/Developer/Xcode/DerivedData/PROJECTNAME-esksqmlmtpqewpbktcqeqloackeu/Build/Intermediates.noindex/PROJECT.build/Debug-的iPhoneOS / PROJECTNAME.build /对象 - 正常/ arm64 / main.o'对于架构arm64   clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)

(我已将项目名称编辑为PROJECTNAME,并将项目名称编辑为PROJECT以在此处发布。)

起初我认为这可能是由于该项目通过Cocoapods使用的依赖项之一,但它们都具有“启用Bitcode”功能。设为'是'是如果是这种情况,我希望在错误消息中看到违规库的名称。除了Cocoapods(和Apple框架)中包含的框架之外,该项目不使用任何框架。

我尝试删除派生数据,重新启动Xcode以及清除构建文件夹,但错误仍然存​​在。

我还试过了“-fembed-bitcode-marker”。这里针对类似问题提出的解决方案:

iOS library to BitCode

但我并没有建立一个静态库,而是一个应用程序,所以也许并不令人惊讶它没有任何区别。

该项目相当庞大,自2012年开始开发,因此包括Objective-C和Swift。它目前有iOS 8作为部署目标,11.2作为基础SDK。在过去的任何开发或生产版本中都没有启用Bitcode。我们在类似但更近期的项目上启用了Bitcode。我们目前正在使用Xcode 9.2(9C40b)。

我知道我可以设置'启用Bitcode'到了没有'对于项目的构建设置来修复'这个错误,但我确实启用了bitcode,以便在上传二进制文件后Apple可以进行重新优化,如下所述: Apple Docs - App Thinning

我是否在构建设置中错过了一个修复此错误或其他内容的标志?任何建议都非常感谢!

非常感谢, 尼克

1 个答案:

答案 0 :(得分:1)

在更新到Xcode 10之后,我们尝试再次为该项目生成一个Bitcode包,并且(在尝试了不同的构建配置之后)能够这样做。最终用于该项目的配置是:

对于项目和Pod的构建设置:

  • “启用位码”设置为“是”
  • 在“其他C标志”中添加“ -fembed-bitcode”
  • 为“ BITCODE_GENERATION_MODE”添加值“ bitcode”

这些设置对于“调试”和“发布”都是必需的。这是因为,如果我们尝试使用“ -fembed-bitcode-marker”或“ marker”标志,则Debug将抛出“无法生成位码”错误(请参阅原始问题)。

我们希望对调试使用'marker'变体,因为它可以更快地进行编译,但是至少我们现在有了一些可行的东西!