当我设置启用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”。这里针对类似问题提出的解决方案:
但我并没有建立一个静态库,而是一个应用程序,所以也许并不令人惊讶它没有任何区别。
该项目相当庞大,自2012年开始开发,因此包括Objective-C和Swift。它目前有iOS 8作为部署目标,11.2作为基础SDK。在过去的任何开发或生产版本中都没有启用Bitcode。我们在类似但更近期的项目上启用了Bitcode。我们目前正在使用Xcode 9.2(9C40b)。
我知道我可以设置'启用Bitcode'到了没有'对于项目的构建设置来修复'这个错误,但我确实启用了bitcode,以便在上传二进制文件后Apple可以进行重新优化,如下所述: Apple Docs - App Thinning
我是否在构建设置中错过了一个修复此错误或其他内容的标志?任何建议都非常感谢!
非常感谢, 尼克
答案 0 :(得分:1)
在更新到Xcode 10之后,我们尝试再次为该项目生成一个Bitcode包,并且(在尝试了不同的构建配置之后)能够这样做。最终用于该项目的配置是:
对于项目和Pod的构建设置:
这些设置对于“调试”和“发布”都是必需的。这是因为,如果我们尝试使用“ -fembed-bitcode-marker”或“ marker”标志,则Debug将抛出“无法生成位码”错误(请参阅原始问题)。
我们希望对调试使用'marker'变体,因为它可以更快地进行编译,但是至少我们现在有了一些可行的东西!