M1芯片Mac运行React Native项目报Swift未定义符号错误如何解决
M1芯片Mac运行React Native项目Swift符号缺失错误修复方案
你遇到的所有Undefined symbol报错本质是React Native 0.64.2版本搭配Xcode 13在M1芯片设备的iOS模拟器构建时,未正确链接Swift运行时库导致的。你之前添加Swift文件和桥接文件的操作未生效,是因为缺少对应的链接器配置和架构兼容配置,按以下步骤操作即可解决:
修复步骤
步骤1:添加链接器标记
- 打开iOS项目下的
.xcworkspace文件,选中项目根节点,切换到你的应用对应的TARGETS,进入「Build Settings」标签页 - 搜索
Other Linker Flags,在Debug和Release配置下分别添加两个标记:-ld64:强制Xcode使用旧版链接器,避免Xcode 13默认的新版链接器对旧RN版本的兼容问题-lswiftCore:强制链接Swift核心库,解决Swift符号缺失问题
步骤2:配置模拟器架构兼容
React Native 0.64.2本身不支持arm64架构的iOS模拟器,需要临时排除该架构:
- 仍在Build Settings页面,搜索
Excluded Architectures - 针对「Any iOS Simulator SDK」选项,添加值
arm64 - 为了避免每次执行
pod install后Pod项目的配置被覆盖,在你的Podfile末尾添加如下自动配置脚本:
post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64" end end end
- 保存Podfile后,在项目ios目录下执行
pod install使配置生效
步骤3:清理缓存重新构建
- 关闭Xcode,执行以下命令清理所有构建缓存:
rm -rf ~/Library/Developer/Xcode/DerivedData rm -rf ios/Pods ios/Podfile.lock cd ios && pod install
- 重新打开项目的
.xcworkspace文件,按Command+Shift+K清理Xcode内部缓存后,重新运行项目即可
兜底方案
如果上述操作后仍有问题,可以右键访达中的Xcode应用,选择「显示简介」,勾选「使用Rosetta打开」后重启Xcode再运行项目即可。
内容的提问来源于stack exchange,提问作者Vinayak B
相关产品推荐
相关产品推荐

