无法为 arm64 生成位码包
Bitcode bundle could not be generated for arm64
我在当前正在处理的项目的构建设置中将 'Enable Bitcode' 设置为 'YES' 时遇到构建错误。错误是:
ld: bitcode bundle could not be generated because '/Users/nick/Library/Developer/Xcode/DerivedData/PROJECTNAME-esksqmlmtpqewpbktcqeqloackeu/Build/Intermediates.noindex/PROJECT.build/Debug-iphoneos/PROJECTNAME.build/Objects-normal/arm64/main.o' was built without full bitcode. All object files and libraries for bitcode must be generated from Xcode Archive or Install build file '/Users/nick/Library/Developer/Xcode/DerivedData/PROJECTNAME-esksqmlmtpqewpbktcqeqloackeu/Build/Intermediates.noindex/PROJECT.build/Debug-iphoneos/PROJECTNAME.build/Objects-normal/arm64/main.o' for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
(我在此处将项目名称编辑为 PROJECTNAME,将 PROJECT 的变体编辑为 post。)
起初我认为这可能是由于该项目通过 Cocoapods 使用的依赖项之一,但它们都将 'Enable Bitcode' 设置为 'YES',我希望看到名称如果是这种情况,错误消息中有问题的库。除了通过 Cocoapods(和 Apple 框架)包含的框架外,该项目不使用任何框架。
我已尝试删除派生数据、重新启动 Xcode 以及清除构建文件夹,但错误仍然存在。
我还尝试了针对类似问题所建议的“-fembed-bitcode-marker”解决方案:
但我不是在构建静态库,而是在构建应用程序,所以也许不足为奇,它没有任何区别。
该项目相当大,自 2012 年开始开发,因此包括 Objective-C 和 Swift。它目前有 iOS 8 作为部署目标和 11.2 作为基础 SDK。过去从未在任何开发或生产版本中启用过 Bitcode。我们在类似但更新的项目上启用了 Bitcode。我们目前正在使用 Xcode 9.2 (9C40b)。
我知道我可以将项目的构建设置 'Enable Bitcode' 设置为 'NO' 到 'fix' 错误,但我宁愿为 Apple 可以做的重新优化启用位码按照此处所述上传二进制文件后:
Apple Docs - App Thinning
我是不是在构建设置中遗漏了修复此错误的标志或其他内容?非常感谢任何建议!
非常感谢,
尼克
更新到 Xcode 10 后,我们尝试再次为这个项目生成一个 Bitcode 包,并且(在尝试不同的构建配置之后)已经能够这样做。最终适用于该项目的配置是:
对于项目和 Pod 的构建设置:
- 'Enable Bitcode' 设置为 'YES'
- 将“-fembed-bitcode”添加到 'Other C Flags'
- 添加 'BITCODE_GENERATION_MODE' 值 'bitcode'
调试和发布都需要这些设置。这是因为如果我们尝试使用“-fembed-bitcode-marker”或 'marker' 标志,Debug 会抛出 'bitcode could not be generated' 错误(参见原始问题)。
我们更愿意为调试使用 'marker' 变体,因为它编译速度更快,但至少我们现在有了可用的东西!
我在当前正在处理的项目的构建设置中将 'Enable Bitcode' 设置为 'YES' 时遇到构建错误。错误是:
ld: bitcode bundle could not be generated because '/Users/nick/Library/Developer/Xcode/DerivedData/PROJECTNAME-esksqmlmtpqewpbktcqeqloackeu/Build/Intermediates.noindex/PROJECT.build/Debug-iphoneos/PROJECTNAME.build/Objects-normal/arm64/main.o' was built without full bitcode. All object files and libraries for bitcode must be generated from Xcode Archive or Install build file '/Users/nick/Library/Developer/Xcode/DerivedData/PROJECTNAME-esksqmlmtpqewpbktcqeqloackeu/Build/Intermediates.noindex/PROJECT.build/Debug-iphoneos/PROJECTNAME.build/Objects-normal/arm64/main.o' for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
(我在此处将项目名称编辑为 PROJECTNAME,将 PROJECT 的变体编辑为 post。)
起初我认为这可能是由于该项目通过 Cocoapods 使用的依赖项之一,但它们都将 'Enable Bitcode' 设置为 'YES',我希望看到名称如果是这种情况,错误消息中有问题的库。除了通过 Cocoapods(和 Apple 框架)包含的框架外,该项目不使用任何框架。
我已尝试删除派生数据、重新启动 Xcode 以及清除构建文件夹,但错误仍然存在。
我还尝试了针对类似问题所建议的“-fembed-bitcode-marker”解决方案:
但我不是在构建静态库,而是在构建应用程序,所以也许不足为奇,它没有任何区别。
该项目相当大,自 2012 年开始开发,因此包括 Objective-C 和 Swift。它目前有 iOS 8 作为部署目标和 11.2 作为基础 SDK。过去从未在任何开发或生产版本中启用过 Bitcode。我们在类似但更新的项目上启用了 Bitcode。我们目前正在使用 Xcode 9.2 (9C40b)。
我知道我可以将项目的构建设置 'Enable Bitcode' 设置为 'NO' 到 'fix' 错误,但我宁愿为 Apple 可以做的重新优化启用位码按照此处所述上传二进制文件后: Apple Docs - App Thinning
我是不是在构建设置中遗漏了修复此错误的标志或其他内容?非常感谢任何建议!
非常感谢, 尼克
更新到 Xcode 10 后,我们尝试再次为这个项目生成一个 Bitcode 包,并且(在尝试不同的构建配置之后)已经能够这样做。最终适用于该项目的配置是:
对于项目和 Pod 的构建设置:
- 'Enable Bitcode' 设置为 'YES'
- 将“-fembed-bitcode”添加到 'Other C Flags'
- 添加 'BITCODE_GENERATION_MODE' 值 'bitcode'
调试和发布都需要这些设置。这是因为如果我们尝试使用“-fembed-bitcode-marker”或 'marker' 标志,Debug 会抛出 'bitcode could not be generated' 错误(参见原始问题)。
我们更愿意为调试使用 'marker' 变体,因为它编译速度更快,但至少我们现在有了可用的东西!