React Native iOS构建报错Segmentation fault:11问题求助
React Native iOS构建失败:Segmentation fault: 11 错误排查
问题描述
执行yarn run:ios启动现有iOS应用时失败,通过Xcode或yarn构建均触发Segmentation fault错误。
环境配置
运行环境为macOS 13.6、Apple M1芯片,详细配置如下:
System: OS: macOS 13.6 CPU: (8) arm64 Apple M1 Memory: 179.06 MB / 16.00 GB Shell: 5.9 - /bin/zsh Binaries: Node: 16.20.2 - ~/.nvm/versions/node/v16.20.2/bin/node Yarn: 1.22.19 - ~/.nodebrew/current/bin/yarn npm: 8.19.4 - ~/.nvm/versions/node/v16.20.2/bin/npm Watchman: 2023.09.18.00 - /opt/homebrew/bin/watchman Managers: CocoaPods: 1.12.1 - /Users/teraichi/.rbenv/shims/pod SDKs: iOS SDK: Platforms: DriverKit 22.2, iOS 16.2, macOS 13.1, tvOS 16.1, watchOS 9.1 Android SDK: Not Found IDEs: Android Studio: 2022.3 AI-223.8836.35.2231.10671973 Xcode: 14.2/14C18 - /usr/bin/xcodebuild Languages: Java: javac 21 - /usr/bin/javac npmPackages: @react-native-community/cli: Not Found react: 17.0.2 => 17.0.2 react-native: 0.64.4 => 0.64.4 react-native-macos: Not Found npmGlobalPackages: *react-native*: Not Found
报错详情
构建阶段触发PhaseScriptExecution失败,核心错误日志:
PhaseScriptExecution [CP-User]\ Generate\ Specs /Users/teraichi/Library/Developer/Xcode/DerivedData/Cucom-basegvsyhmpmsgdvjavywleoezbw/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/FBReactNativeSpec.build/Script-9666B301DB9D9BA74C1C0CDD9B765E7B.sh (in target 'FBReactNativeSpec' from project 'Pods') ... /Users/teraichi/Library/Developer/Xcode/DerivedData/Cucom-basegvsyhmpmsgdvjavywleoezbw/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/FBReactNativeSpec.build/Script-9666B301DB9D9BA74C1C0CDD9B765E7B.sh: line 4: 23095 Segmentation fault: 11 bash -l -c 'SRCS_DIR=/Users/teraichi/Work/Cucom-App-v2/node_modules/react-native/scripts/../Libraries CODEGEN_MODULES_OUTPUT_DIR=/Users/teraichi/Work/Cucom-App-v2/node_modules/react-native/scripts/../React/FBReactNativeSpec/FBReactNativeSpec CODEGEN_MODULES_LIBRARY_NAME=FBReactNativeSpec /Users/teraichi/Work/Cucom-App-v2/node_modules/react-native/scripts/generate-specs.sh' 2>&1 23096 Done | tee "${SCRIPT_OUTPUT_FILE_0}" Command PhaseScriptExecution failed with a nonzero exit code
涉及的脚本内容:
# /Users/teraichi/Library/Developer/Xcode/DerivedData/Cucom-basegvsyhmpmsgdvjavywleoezbw/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/FBReactNativeSpec.build/Script-9666B301DB9D9BA74C1C0CDD9B765E7B.sh #!/bin/sh set -o pipefail bash -l -c 'SRCS_DIR=/Users/teraichi/Work/Cucom-App-v2/node_modules/react-native/scripts/../Libraries CODEGEN_MODULES_OUTPUT_DIR=/Users/teraichi/Work/Cucom-App-v2/node_modules/react-native/scripts/../React/FBReactNativeSpec/FBReactNativeSpec CODEGEN_MODULES_LIBRARY_NAME=FBReactNativeSpec /Users/teraichi/Work/Cucom-App-v2/node_modules/react-native/scripts/generate-specs.sh' 2>&1 | tee "${SCRIPT_OUTPUT_FILE_0}"
已尝试方案
- 重启电脑
- 升级macOS版本
- 更新Xcode版本
- 升降Node.js版本
- 尝试网络上常见解决方案,但问题未解决
针对性解决方案
针对Apple M1芯片+React Native 0.64.x的组合,这个错误多由架构兼容或脚本执行环境问题导致,可按以下步骤尝试:
调整终端运行架构
打开终端,右键点击终端图标→「显示简介」,取消勾选「使用Rosetta打开」,重启终端后重新执行构建。修改生成脚本的执行架构
找到node_modules/react-native/scripts/generate-specs.sh,在脚本开头添加:arch -x86_64强制以x86架构执行脚本,规避M1的arm64架构冲突。
彻底清理构建缓存
执行以下命令清理所有缓存文件:rm -rf node_modules yarn cache clean cd ios && pod deintegrate && pod install rm -rf ~/Library/Developer/Xcode/DerivedData回到项目根目录后重新执行
yarn run:ios。调整Xcode构建配置
打开Xcode项目,进入「Build Settings」→「Architectures」,将Build Active Architecture Only设为YES,并确保Valid Architectures包含arm64和x86_64。升级React Native版本
React Native 0.64.x对M1芯片的支持不完善,建议升级到0.66及以上版本(该版本开始全面适配M1芯片)。
内容的提问来源于stack exchange,提问作者寺元一耕
相关产品推荐
相关产品推荐

