MacOS 12.4苹果硅芯片运行Flutter iOS应用启动报错求助
故障说明
苹果硅芯片设备运行Flutter iOS模拟器时提示Downloaded executables cannot execute on host、拉起应用返回无效pid的报错,和Android工具链未安装的提示无关,该问题核心是Xcode 13.4环境下,Flutter默认尝试以arm64e架构启动iPhone 13模拟器,但模拟器实际仅支持arm64架构,架构不匹配导致进程直接启动失败,重装Flutter不修改架构配置的话无法解决问题。
解决步骤
按顺序执行以下操作即可修复:
- 清理项目旧构建缓存,进入Flutter项目根目录,终端依次执行:
flutter clean flutter pub get
- 修改iOS项目的Pod配置,打开项目下
ios/Podfile文件,在post_install钩子中添加模拟器架构指定规则,排除不支持的arm64e架构:
post_install do |installer| installer.pods_project.targets.each do |target| flutter_additional_ios_build_settings(target) end # 新增以下配置段 installer.pods_project.build_configurations.each do |config| config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64e i386" config.build_settings["ARCHS[sdk=iphonesimulator*]"] = "arm64 x86_64" end end
修改完成后进入ios目录,执行pod install --repo-update更新Pod依赖配置。
- 重置模拟器与Xcode命令行环境:
- 完全退出已打开的Xcode、模拟器程序
- 终端执行
xcrun simctl shutdown all关闭所有后台运行的模拟器实例 - 执行
xcrun simctl erase all清空所有模拟器的旧缓存数据 - 执行
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer,确认Xcode命令行工具绑定到当前安装的Xcode路径,输入系统密码回车即可
- 重新拉取Flutter的iOS平台二进制缓存,终端执行:
flutter precache --ios
等待缓存下载完成后,重新打开模拟器启动项目即可正常运行。
注意:不需要通过Rosetta转译运行Xcode或Flutter,原生arm64模式下按上述配置即可正常启动,转译运行反而可能引发额外的架构冲突问题。
内容的提问来源于stack exchange,提问作者shreyshrey
相关产品推荐
相关产品推荐

