React Native升级至v0.67.0后iOS端构建失败如何解决
React Native v0.65.1 升级 v0.67.0 iOS端构建失败修复方案
问题场景
- React Native 版本从v0.65.1升级至v0.67.0后iOS端构建失败
- 已尝试删除
node_modules、Pods目录后重新安装依赖,问题未解决 - 当前使用Xcode版本为13.4.1
- 典型报错为RCT-Folly编译阶段提示
fmt/format.h file not found,或链接阶段出现Folly相关符号未定义错误
修复步骤
1. 调整Podfile依赖与编译配置
RN v0.67.0默认锁定的Folly版本与Xcode 13.4存在头文件搜索路径兼容问题,首先修改ios/Podfile配置:
- 在Podfile最顶部全局变量定义区添加版本锁定配置:
$folly_version = '2021.06.28.00-v2' $boost_version = '1.76.0'
- 找到Podfile内的
post_install钩子,补充编译配置修正逻辑,注意保留原有react_native_post_install调用:
post_install do |installer| react_native_post_install(installer) installer.pods_project.targets.each do |target| target.build_configurations.each do |config| # 统一最低部署版本,避免第三方依赖版本冲突 config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0' # 修复RCT-Folly头文件搜索路径缺失问题 if target.name == 'RCT-Folly' config.build_settings['HEADER_SEARCH_PATHS'] = "$(inherited) ${PODS_ROOT}/fmt/include" end # 适配Xcode13.4默认配置,关闭Bitcode避免链接错误 config.build_settings['ENABLE_BITCODE'] = 'NO' end end end
- 如果不需要启用新架构,在Podfile顶部添加配置关闭新架构编译开关:
ENV['RCT_NEW_ARCH_ENABLED'] = '0'
2. 全量清理缓存后重装依赖
不要仅删除依赖目录,必须同步清理各层缓存,按顺序执行以下命令:
# 清理watchman监听缓存 watchman watch-del-all # 清理JS依赖与锁文件 rm -rf node_modules yarn.lock package-lock.json # 重新安装JS依赖,使用yarn则执行yarn install,使用npm则执行npm install yarn install # 进入iOS目录清理原生依赖与构建缓存 cd ios rm -rf Pods Podfile.lock build pod deintegrate pod install --repo-update # 清理Xcode派生数据缓存 rm -rf ~/Library/Developer/Xcode/DerivedData/*
3. Xcode项目配置校验
- 打开项目时必须选择
ios/[你的项目名].xcworkspace文件,不要使用.xcodeproj后缀文件 - 选中项目主Target,进入
Build Settings页搜索Excluded Architectures,在所有编译模式下添加arm64,解决模拟器编译架构兼容问题 - 检查项目路径是否存在中文、空格或特殊字符,若存在需调整为纯英文路径
若完成以上步骤后仍报错,检查项目内手动链接的第三方原生依赖,部分未适配RN0.67版本的老依赖会存在编译冲突,需将对应依赖升级至支持RN0.67+的版本。
内容的提问来源于stack exchange,提问作者Anitta
相关产品推荐
相关产品推荐

