如何解决React Native on Apple Silicon M1 - 链接库“libPods-ProjectName.a”缺少此目标所需的一个或多个架构:x86_64
我正在尝试在具有 M1 架构的 MacBook Pro 上为 iOS 模拟器构建一个 React Native 项目。
该项目很好地构建在英特尔架构上。
它也在设备上构建并在 M1 上很好地存档。但不是在模拟器上。
我在切换到 M1 芯片组时遇到了这个经典错误。
在/project-folder/ios/Pods/OpenSSL-Universal/ios/lib/libcrypto.a(cryptlib.o)中,为iOS模拟器构建,但在为iOS构建的目标文件中链接,文件'/project-folder /ios/Pods/OpenSSL-Universal/ios/lib/libcrypto.a' 用于架构 arm64
我将 arm64 添加到排除的架构中。
我还添加了以下代码段,但如果没有它,它也会以相同的方式做出反应。
post_install do |installer|
installer.pods_project.build_configurations.each do |config|
config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
end
end
现在我有:
/project-folder/ios/ProjectName.xcodeproj 链接库“libPods-ProjectName.a”缺少此目标所需的一个或多个架构:x86_64。
我尝试在项目的架构列表中添加 x86_64,但没有结果。
我是从 Xcode IDE 构建的。对于我尝试过的所有 iPhone:8、11、12 以及我尝试过的所有目标:iOS 9、10 和 13,都会出现此错误消息。
解决方法
我遇到了同样的问题,最后我修复了它。出现错误的主要原因有两个:
arm64
架构支持和 Xcode 12 兼容版本尚未由许多流行的第三方库(如 Firebase、AFNetworking 等)提供。 Xcode 11 曾经自动将模拟器的 arm64 构建转换为x86_64
的构建,但现在arm64
是一个有效的模拟器架构(它是 Apple Silicon 架构),这种转换不再发生。>-
由于已从 Xcode 12 中删除了 Valid Architectures 构建设置,因此在 Xcode 12 中打开的项目文件将在用户定义中自动生成一个
VALID_ARCHS
宏,该宏将使构建失败。
我按照这篇文章中的所有步骤操作:https://medium.com/@khushwanttanwar/xcode-12-compilation-errors-while-running-with-ios-14-simulators-5731c91326e9
最后一步是通过在项目文件夹中运行以下命令来更新所有 Pod:
pod deintegrate
pod update
然后我从主项目和 Pod 项目中排除模拟器架构的 arm64
。
清理项目(⇧ + ⌘ + k)然后运行。
,XCode 12.5 打破了上述大部分答案。对于那些使用 XCode 12.5 和 react-native 0.64.2 的人,我写了一个小指南来让事情工作:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。