Mac M1环境React Native执行pod install报ffi架构不兼容错误
报错原因
这是M1系列芯片Mac(arm64架构)上典型的Ruby依赖架构不匹配问题:你之前通过arch -x86_64前缀安装的是x86_64转译版本的ffi库,但你直接执行pod install时,系统调用的是原生arm64架构的系统Ruby,加载x86_64架构的ffi动态库时就会抛出「have 'x86_64', need 'arm64e'」的不兼容错误。另外你的Podfile存在一处配置冲突,即使解决架构问题后续也会触发编译报错。
修复步骤
- 先清理之前装错架构的ffi包,执行:
sudo gem uninstall ffi
弹出多版本选择提示时直接选全部删除。
- 安装适配arm64原生架构的ffi,执行命令时不要加任何架构转译前缀:
sudo gem install ffi
- 修正Podfile的配置冲突:你开启了
use_frameworks! :linkage => :static静态框架链接选项,但React Native官方明确说明该选项开启后Flipper无法正常工作,你文件里同时保留了use_flipper!()配置,需要把这行注释掉:
# use_flipper!()
- 进入项目ios目录,清理旧的Pods缓存后重新安装依赖:
cd ios pod deintegrate pod install --repo-update
注意:不要混用架构转译和原生模式的命令。如果你选择一直用x86_64转译模式跑CocoaPods,那所有gem安装、pod相关命令都必须加
arch -x86_64前缀;如果用原生arm64模式就全程不要加这个前缀,混着用会反复触发架构不匹配报错。优先用原生arm64模式,依赖安装速度比转译模式快很多。
内容的提问来源于stack exchange,提问作者M.Kalidass
相关产品推荐
相关产品推荐

