M1 Mac上React Native构建失败:React-Codegen目标编译错误
问题描述
执行npx react-native run-ios时触发React-Codegen目标编译失败,报错信息:
CompileC /Users/jessicageorge-mannella/Library/Developer/Xcode/DerivedData/AwesomeProject-ctnixtnnzajiwuhfvbyaxlajljew/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/React-Codegen.build/Objects-normal/arm64/FBReactNativeSpec-generated.o /Users/jessicageorge-mannella/Documents/testing/AwesomeProject/ios/build/generated/ios/FBReactNativeSpec/FBReactNativeSpec-generated.mm normal arm64 objective-c++ com.apple.compilers.llvm.clang.1_0.compiler (in target 'React-Codegen' from project 'Pods')
(1 failure)
已尝试重装macOS,问题未解决。
环境信息
System: OS: macOS 13.3 CPU: (10) arm64 Apple M1 Pro Memory: 150.44 MB / 16.00 GB Shell: 5.9 - /bin/zsh Binaries: Node: 18.15.0 - /usr/local/bin/node Yarn: Not Found npm: 9.6.3 - /usr/local/bin/npm Watchman: 2023.03.27.00 - /opt/homebrew/bin/watchman Managers: CocoaPods: 1.11.3 - /usr/local/bin/pod SDKs: iOS SDK: Platforms: DriverKit 22.4, iOS 16.4, macOS 13.3, tvOS 16.4, watchOS 9.4 Android SDK: Not Found IDEs: Android Studio: Not Found Xcode: 14.3/14E222b - /usr/bin/xcodebuild Languages: Java: Not Found npmPackages: @react-native-community/cli: Not Found react: 18.2.0 => 18.2.0 react-native: 0.71.5 => 0.71.5 react-native-macos: Not Found npmGlobalPackages: *react-native*: Not Found
解决方案
针对当前环境的有效修复步骤:
升级CocoaPods版本
1.11.3版本对M1芯片和Xcode14.3兼容性不足,升级到1.12.x及以上:sudo gem install cocoapods进入ios目录执行:
pod deintegrate && pod install调整Xcode编译架构
- 打开ios目录下的
.xcworkspace文件 - 选中项目根节点,进入
Build Settings标签 - 搜索
Excluded Architectures,在Debug-iphonesimulator项添加arm64 - 搜索
Valid Architectures,确保仅包含x86_64(针对模拟器) - 按
Command+Shift+K清理缓存,重新编译
- 打开ios目录下的
清理并重新生成依赖
执行以下命令彻底清理缓存:rm -rf ios/build rm -rf node_modules npm install cd ios && pod install --repo-update之后重新执行
npx react-native run-ios用Rosetta运行终端
右键终端应用→显示简介,勾选使用Rosetta打开,重启终端后再执行编译命令,解决部分架构冲突问题切换Node.js版本测试
RN 0.71.5推荐Node.js 16.x/18.x,可尝试切换到16.x稳定版:nvm install 16 nvm use 16重新安装依赖后编译测试
内容的提问来源于stack exchange,提问作者Osa

