React Native升级0.69.0出现FBReactNativeSpec.h报错如何解决
问题复现场景
- 执行
react-native upgrade将React Native从0.68.x版本升级至0.69.0版本后,编译iOS端触发报错:FBReactNativeSpec 'value' is unavailable : introduced in ios 12.0 react native - 使用最新版本React Native创建全新项目时,会触发完全相同的报错
- 对应环境配置:
- Xcode版本:
12.4 - macOS系统版本:
10.15.7
- Xcode版本:
- 报错参考截图:


根因说明
React Native 0.69版本正式将iOS端最低支持版本提升至12.0,自动生成的FBReactNativeSpec代码中使用了iOS 12.0才开放的枚举值value属性。Xcode 12.4版本的Clang编译器存在可用性校验兼容问题,无法正确读取Pods依赖的部署目标配置,直接将该API判定为不可用抛出编译错误,全新创建的RN项目因为同样的环境兼容问题也会触发报错。
修复方案
方案1:升级开发环境(官方推荐,无后续兼容问题)
React Native 0.69及后续版本官方明确要求Xcode最低版本为13.0:
- 将macOS系统升级至11.0及以上版本
- 安装Xcode 13.0及以上稳定版本
- 进入项目iOS目录执行
pod install --repo-update,清理Xcode编译缓存后重新构建即可,新建项目也不会再出现同类报错。
方案2:不升级Xcode的临时兼容方案
如果暂时无法升级系统和Xcode,可通过修改Pod配置绕过校验:
- 打开iOS项目根目录下的
Podfile文件,确认全局iOS平台版本配置为12.0及以上:
platform :ios, '12.0'
- 在
Podfile末尾添加如下post_install钩子,统一修正所有Pods依赖的部署版本,关闭错误的可用性严格校验:
post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0' config.build_settings['CLANG_WARN_UNGUARDED_AVAILABILITY'] = 'NO' end end end
- 进入iOS目录执行
pod install更新依赖,在Xcode中按Cmd+Shift+K清理编译缓存后重新编译即可。
方案3:手动改码兼容(不推荐)
如果上述配置修改后仍有报错,可以手动打开Pods项目中FBReactNativeSpec目录下的报错文件,将所有触发报错的.value枚举取值写法替换为对应原生枚举值的直接调用即可。注意该修改会在每次执行pod install后被覆盖,仅适合临时调试使用。
内容的提问来源于stack exchange,提问作者user17859754
相关产品推荐
相关产品推荐

