Xcode13beta编译React Native0.64.2项目报swiftFileProvider未定义错误如何解决
问题原因
这个错误是Xcode 13 Beta版的兼容性问题:React Native 0.64.2自带的YogaKit库依赖Swift标准库,而纯OC的RN项目默认没有开启Swift支持,Xcode不会自动链接swiftFileProvider相关符号,最终触发x86_64架构下的链接错误。
错误详情:
Undefined symbols for architecture x86_64: "__swift_FORCE_LOAD_$_swiftFileProvider", referenced from: __swift_FORCE_LOAD_$_swiftFileProvider_$_YogaKit in libYogaKit.a(YGLayoutExtensions.o) (maybe you meant: __swift_FORCE_LOAD_$_swiftFileProvider_$_YogaKit) ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
修复方案
以下方案任选其一即可,优先选择方案一,兼容性最高:
方案一:添加Swift空文件开启Swift支持
- 打开Xcode中的iOS项目,右键点击项目根目录,选择「New File」
- 选择「Swift File」类型,自定义文件名比如
Placeholder.swift,点击创建 - 弹出是否创建桥接头文件的提示时,选择「Create Bridging Header」
- 无需修改新创建的两个文件内容,直接重新编译项目即可
方案二:手动添加链接标记
- 打开Xcode项目的「Build Settings」选项卡,找到
Other Linker Flags配置项 - 新增配置值:
-lswiftFileProvider - 重新编译项目即可
方案三:通过CocoaPods钩子自动适配(适合多团队协作场景)
- 打开项目根目录下的
Podfile文件,添加如下post_install脚本:
post_install do |installer| installer.pods_project.targets.each do |target| if target.name == "YogaKit" target.build_configurations.each do |config| config.build_settings['OTHER_LDFLAGS'] ||= [] config.build_settings['OTHER_LDFLAGS'] << '-lswiftFileProvider' end end end end
- 保存文件后,在项目ios目录下执行
pod install - 重新打开生成的
.xcworkspace文件编译即可
注意:如果编译后仍有同类错误,可尝试清理Xcode缓存(快捷键Command+Shift+K)后重新编译。
内容的提问来源于stack exchange,提问作者user938363
相关产品推荐
相关产品推荐

