M2 Max macOS设备上Flutter应用启动失败,官方修复无效求助
解决M2 Max macOS上Flutter pod install的ffi架构不兼容问题
核心原因
M2 Max是arm64架构,若终端通过Rosetta以x86_64模式运行,gem会默认安装x86_64版本的ffi,导致架构不匹配触发错误。
分步解决方案
1. 切换终端到原生arm64模式
- 打开访达,进入「应用程序/实用工具」
- 右键点击「终端」→「显示简介」
- 取消勾选「使用Rosetta打开」,重启终端生效
2. 彻底清理所有旧版本ffi
执行以下命令,一次性卸载所有ffi版本,避免残留:
sudo gem uninstall -aIx ffi
3. 强制安装arm64架构的ffi
指定架构参数安装,确保生成适配M2 Max的版本:
sudo gem install ffi -- --with-cflags="-arch arm64" --with-ldflags="-arch arm64" --enable-libffi-alloc
4. 清理Flutter及Pod缓存
Flutter可能缓存了旧的Pod配置,需要彻底清理后重新安装:
flutter clean rm -rf ios/Pods rm ios/Podfile.lock cd ios pod repo update pod install --repo-update cd .. flutter run
5. 排查Ruby版本管理器(若使用)
如果你用rbenv或rvm管理Ruby,确保安装的是arm64版本的Ruby:
- 用rbenv的话:
安装完成后,重新执行步骤2-3的ffi安装命令rbenv install --list # 查看支持的arm64 Ruby版本,比如3.2.2 rbenv install 3.2.2 rbenv global 3.2.2
验证安装结果
执行以下命令确认ffi是arm64版本:
gem which ffi # 复制输出的路径,替换到下面命令中 lipo -info $(gem which ffi | sed 's/lib\/ruby\/.*\.rb/extensions\/arm64-darwin.*\/ffi_c.bundle/')
输出包含arm64即说明安装正确。
内容的提问来源于stack exchange,提问作者ccc
相关产品推荐
相关产品推荐

