M1芯片+Sonoma14.0+Xcode15.0环境下React Native iOS构建失败求助
问题背景
在M1芯片Mac(MacOS Sonoma 14.0)上使用Xcode15.0构建React Native 0.72.6项目时,出现以下错误:
Details: createItemModels creation requirements should not create a capability item model for a capability item model that already exists.
Function: createItemModels(for:itemModelSource:)
** BUILD FAILED **
The following build commands failed:
CompileC ... React-hermes.build/Objects-normal/arm64/MessageTypes.o ... com.apple.compilers.llvm.clang.1_0.compiler (in target 'React-hermes' from project 'Pods')
已尝试重新安装Pods,但问题未解决。
解决方案
方案1:升级React Native到兼容Xcode15的补丁版本
React Native 0.72.6本身对Xcode15的支持存在缺陷,官方在0.72.10及后续补丁版本中修复了相关问题。执行以下命令升级:
npm install react-native@0.72.10 --save-exact # 或使用yarn yarn add react-native@0.72.10 --exact
升级完成后,重新执行:
cd ios && pod install
方案2:修改Podfile添加编译兼容配置(不升级RN)
如果暂时无法升级RN,可通过修改ios/Podfile添加针对Xcode15的编译参数:
- 打开项目根目录下的
ios/Podfile - 在文件末尾的
post_install块中添加针对React-hermes的配置(如果没有post_install块则新建):
post_install do |installer| installer.pods_project.targets.each do |target| if target.name == "React-hermes" target.build_configurations.each do |config| config.build_settings['CLANG_CXX_LANGUAGE_STANDARD'] = 'gnu++17' config.build_settings['CLANG_CXX_LIBRARY'] = 'libc++' end end # 保留原有的RN配置(如react_native_post_install等) react_native_post_install(installer) end end
- 执行以下命令重新安装Pods并清理构建缓存:
cd ios && pod deintegrate && pod install rm -rf ~/Library/Developer/Xcode/DerivedData
方案3:临时关闭Hermes(仅紧急情况)
如果上述方案都无效,可临时关闭Hermes来绕过编译问题:
- 打开
ios/Podfile,将use_react_native!的配置修改为:
use_react_native!( :path => config[:reactNativePath], # 关闭Hermes :hermes_enabled => false )
- 打开
index.js,移除import 'react-native/Libraries/Core/InitializeCore';(如果存在) - 重新执行
cd ios && pod install
额外说明
- 报错中的
createItemModels警告是Xcode15本身的已知bug,不影响核心构建,主要失败原因是React-hermes的C++编译不兼容Xcode15的新编译器标准。 - 优先推荐方案1,升级到官方修复后的RN版本是最稳定的解决方式。
内容的提问来源于stack exchange,提问作者Abhinav Sinha

