【问题标题】:Bitcode bundle could not be generated for arm64无法为 arm64 生成位码包
【发布时间】:2018-06-13 01:52:06
【问题描述】:

我在当前正在处理的项目的构建设置中将“启用位码”设置为“是”时遇到构建错误。错误是:

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

(我已将项目名称编辑为 PROJECTNAME 和 PROJECT 的变体以在此处发布。)

起初我虽然可能是由于该项目通过 Cocoapods 使用的依赖项之一,但它们都将“启用位码”设置为“是”,我希望在如果是这种情况,则会出现错误消息。除了通过 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)。

我知道我可以将项目的构建设置的“启用位码”设置为“否”以“修复”错误,但我宁愿启用位码,以便在如上所述上传二进制文件后 Apple 可以执行的重新优化这里: Apple Docs - App Thinning

我是否在构建设置中缺少修复此错误的标志或其他问题?非常感谢任何建议!

非常感谢, 尼克

【问题讨论】:

    标签: ios xcode bitcode


    【解决方案1】:

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

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

    • “启用位码”设置为“是”
    • 将“-fembed-bitcode”添加到“其他 C 标志”
    • 添加 'BITCODE_GENERATION_MODE' 和值 'bitcode'

    调试和发布都需要这些设置。这是因为如果我们尝试使用 '-fembed-bitcode-marker' 或 'marker' 标志,调试会抛出 'bitcode could not be generated' 错误(参见原始问题)。

    我们更喜欢为 Debug 使用“标记”变体,因为它编译起来更快,但至少我们现在有了一些可以工作的东西!

    【讨论】:

    • 添加 BITCODE_GENERATION_MODE 片段是我在 2019 年嵌入到我的 xcode 10.2 项目中的自己的静态框架的修复。谢谢
    • @Mike 你能告诉你在哪里添加 BITCODE_GENERATION_MODE 吗?
    • 我添加了这个“BITCODE_GENERATION_MODE”,但我无法删除这个用户设置,请问我应该如何删除它。!
    • 添加了 BITCODE_GENERATION_MODE 并且它现在可以工作了,我不知道为什么在任何地方都没有提到这个设置。
    • 好吧,没有其他工作,但您的解决方案挽救了这一天。我将它设置为标记(调试)和位码(发布),但它仍然无法正常工作。我必须做的另一个步骤是在创建 IPA 时取消选中 Bitcode 复选框。没有它,IPA 处理就会失败。非常感谢您的建议!
    猜你喜欢
    • 2020-09-01
    • 1970-01-01
    • 2021-01-15
    • 2021-04-28
    • 1970-01-01
    • 2022-07-14
    • 2010-11-26
    • 2019-09-15
    • 1970-01-01
    相关资源
    最近更新 更多