M1 Mac Flutter开发运行pod install报CocoaPods ffi架构不兼容错误
M1 Mac Flutter开发CocoaPods架构不兼容报错解决方案
问题根因
报错核心是依赖架构混装:当前环境同时存在Rosetta转译的x86_64程序和原生arm64e程序,之前按照错误提示执行arch -x86_64 sudo gem install ffi安装的是x86_64架构的ffi组件,和系统原生arm64e架构的Ruby环境不匹配;且flutter doctor仅校验依赖是否存在,不会检测架构一致性,所以会显示无异常。另外运行Flutter的终端/Android Studio开启了Rosetta转译,会进一步加剧架构混乱问题。
操作步骤
- 第一步:清理所有历史错装的依赖残留
打开终端(先确认终端没有开启Rosetta模式),依次执行以下命令卸载所有旧版本的ffi、CocoaPods相关组件,遇到多版本提示时选择全部卸载:sudo gem uninstall ffi sudo gem uninstall cocoapods sudo gem uninstall cocoapods-core sudo gem uninstall cocoapods-downloader brew uninstall --force cocoapods - 第二步:安装arm64原生架构的对应依赖
执行以下命令时不要加arch -x86_64前缀,直接安装原生适配M1芯片的版本:sudo gem install ffi sudo gem install cocoapods - 第三步:校验架构正确性
执行以下命令检查ffi组件的架构,输出内容包含arm64e即为安装正确:file /Library/Ruby/Gems/2.6.0/gems/ffi-*/lib/ffi_c.bundle - 第四步:清理项目缓存重新安装依赖
进入你的Flutter项目下的ios目录,清除旧的缓存后重新执行pod安装:cd 你的Flutter项目路径/ios rm -rf Pods Podfile.lock pod repo update pod install - 第五步:关闭Android Studio的Rosetta模式
找到应用列表里的Android Studio,右键选择「显示简介」,取消勾选「使用Rosetta打开」,重启Android Studio后再运行iOS项目即可。
注意:后续所有iOS相关依赖安装操作,都不要手动加
arch -x86_64前缀,避免再次装成x86架构导致冲突。
内容的提问来源于stack exchange,提问作者Pegasus
相关产品推荐
相关产品推荐

