M1芯片Mac使用Nx react-native pod-install命令执行失败求助
M1 Mac下执行
pod install(含NX命令)遇到ffi架构不兼容错误的解决方法 问题场景
在M1芯片的Mac设备上,无论是通过nx run <my_package_name>:pod-install命令,还是直接进入iOS目录执行cd packages/app/ios && pod install,都会触发以下错误:
- 反复提示
Ignoring ffi-1.15.4 because its extensions are not built. Try: gem pristine ffi --version 1.15.4 - 核心架构不兼容报错:
dlopen(/Library/Ruby/Gems/2.6.0/gems/ffi-1.15.5/lib/ffi_c.bundle, 0x0009): tried: '/Library/Ruby/Gems/2.6.0/gems/ffi-1.15.5/lib/ffi_c.bundle' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64'))
环境信息:
- macOS M1 (Silicon)
- react@18.2.0、react-dom@18.2.0
- react-native@0.71.8
- nx@16.3.0-beta.8、@nx/react-native@16.3.0-beta.8
解决步骤
方法1:重新构建适配arm64的ffi
执行以下命令重新安装并修复ffi:
# 安装适配arm64的ffi arch -arm64 gem install ffi -- --enable-libffi-alloc # 修复指定版本的ffi gem pristine ffi --version 1.15.4 gem pristine ffi --version 1.15.5
方法2:通过Rosetta 2运行终端
- 找到「终端」应用,右键选择「显示简介」
- 勾选「使用Rosetta打开」,重启终端
- 重新执行
pod install或nx run app:pod-install
方法3:直接指定命令架构
在执行命令前添加架构指定:
# 直接执行pod install arch -arm64 pod install # 执行NX的pod-install命令 arch -arm64 nx run app:pod-install
方法4:更新Ruby版本(长期解决方案)
M1 Mac自带的Ruby为x86架构,推荐用rbenv安装arm64版本的Ruby:
# 安装rbenv brew install rbenv # 安装适配arm64的Ruby版本(示例为3.2.2) rbenv install 3.2.2 # 设置全局Ruby版本 rbenv global 3.2.2 # 或进入项目目录设置本地版本 # rbenv local 3.2.2 # 重新安装cocoapods gem install cocoapods
完成后再执行pod install或NX相关命令即可。
内容的提问来源于stack exchange,提问作者Guillem Puche
相关产品推荐
相关产品推荐

