升级React Native 0.67后iOS模拟器出现Swift符号未定义错误
React Native 0.67 iOS模拟器链接器错误解决
问题现象
升级至React Native 0.67后,iOS模拟器运行应用时出现链接器错误,核心为x86_64架构下Swift相关符号未定义:
Undefined symbol: swift::swift51override_conformsToSwiftProtocol(swift::TargetMetadata<swift::InProcess> const*, swift::TargetProtocolDescriptor<swift::InProcess> const*, __swift::__runtime::llvm::StringRef, swift::TargetProtocolConformanceDescriptor<swift::InProcess> const* (*)(swift::TargetMetadata<swift::InProcess> const*, swift::TargetProtocolDescriptor<swift::InProcess> const*, __swift::__runtime::llvm::StringRef)) Undefined symbol: _swiftoverride_class_getSuperclass(swift::TargetMetadata<swift::InProcess> const*)
最终链接器命令执行失败,退出码为1。
解决方案
1. 确保Swift标准库正确嵌入与链接
- 打开Xcode项目的
Build Settings,找到Always Embed Swift Standard Libraries,设置为Yes。 - 在
Other Linker Flags中添加-lswiftCore和-lswiftFoundation,或直接添加-ObjC确保Objective-C与Swift库正确链接。 - 若项目原本无Swift文件,新建空Swift文件(如
Dummy.swift),Xcode提示创建桥接文件时确认,之后可移除空Swift文件(保留桥接文件),触发Xcode自动配置Swift编译环境。
2. 清理缓存与重新安装依赖
- 清理Xcode派生数据:
rm -rf ~/Library/Developer/Xcode/DerivedData - 在Xcode中按
Cmd+Shift+K清理项目,再按Cmd+Option+Shift+K清理构建文件夹。 - 进入iOS目录重新集成Pod:
cd ios pod deintegrate pod install
3. 调整架构配置
- 在Xcode的
Build Settings中,将Architectures设置为Standard Architectures (arm64, x86_64)。 - 检查
Excluded Architectures,确保Debug模式下未排除x86_64(React Native 0.67需支持模拟器x86_64架构)。
4. 检查第三方依赖兼容性
- 确认所有第三方依赖(尤其Swift编写的库)已更新至支持React Native 0.67和Xcode 13+的版本(RN 0.67要求Xcode 13及以上,对应Swift 5.5)。
- 若有依赖未更新,尝试替换为兼容替代库,或联系维护者获取适配版本。
内容的提问来源于stack exchange,提问作者Vishal Kumar
相关产品推荐
相关产品推荐

