M1 Pro芯片Mac上Flutter项目iOS模拟器构建失败报错
问题背景
- 长期从事Flutter应用安卓端开发,近期在搭载M1 Pro芯片的MacBook Pro上尝试构建同项目iOS版本
- 运行时
pod install、Xcode build启动流程均正常,但始终在iOS应用构建环节失败 - 新建空白Flutter项目可在iOS模拟器正常启动,已尝试公开渠道可查的各类解决方案均未解决问题
错误日志
构建过程输出日志:
xcodebuild[24755:304662] Requested but did not find extension point with identifier Xcode.IDEKit.ExtensionSentinelHostApplications for extension Xcode.DebuggerFoundation.AppExtensionHosts.watchOS of plug-in com.apple.dt.IDEWatchSupportCore xcodebuild[24755:304662] Requested but did not find extension point with identifier Xcode.IDEKit.ExtensionPointIdentifierToBundleIdentifier for extension Xcode.DebuggerFoundation.AppExtensionToBundleIdentifierMap.watchOS of plug-in com.apple.dt.IDEWatchSupportCore
日志末尾输出:
Command PhaseScriptExecution failed with a nonzero exit code note: Using new build system note: Planning note: Build preparation complete note: Building targets in dependency order
排查方案
首先明确:开头两条watchOS相关的日志是Xcode自带的无害警告,所有带watchOS支持组件的Xcode版本都会输出该内容,和构建失败没有关系。真正的失败原因是构建阶段的shell脚本执行返回了非0状态码,按以下优先级排查即可:
- 架构适配问题(M1设备最高发原因)
M1系列芯片采用arm64架构,大量存量Flutter第三方依赖没有适配arm64架构的iOS模拟器,会导致链接阶段脚本执行失败。- 打开iOS目录下的Podfile,在
post_install块中添加模拟器架构排除配置:
post_install do |installer| installer.pods_project.targets.each do |target| flutter_additional_ios_build_settings(target) # 新增以下内容 target.build_configurations.each do |config| config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'arm64' config.build_settings['ONLY_ACTIVE_ARCH'] = 'YES' end end end- 执行全量清理后重新构建:
flutter clean cd ios rm -rf Pods Podfile.lock ~/Library/Developer/Xcode/DerivedData/* pod deintegrate pod install --repo-update cd .. flutter run - 打开iOS目录下的Podfile,在
- 脚本权限问题
构建阶段调用的Flutter相关脚本缺少执行权限时会直接触发该报错,进入项目根目录执行以下命令赋权即可:
后续打开Xcode进入Runner项目的chmod -R +x ios/Flutter/ chmod +x ios/Pods/Target\ Support\ Files/Pods-Runner/*.shBuild Phases页,检查所有Run Script项的路径,不要包含中文、空格或特殊字符。 - CocoaPods版本兼容问题
M1设备如果通过gem安装了x86转译版本的CocoaPods,会出现脚本执行环境异常,卸载后通过homebrew安装arm原生版本即可:
完成后回到iOS目录重新执行pod install再构建。sudo gem uninstall cocoapods cocoapods-core brew install cocoapods pod setup - 原生SDK兼容问题
如果项目引入了推送、支付、地图类带预编译二进制的第三方SDK,检查对应SDK版本是否支持iOS模拟器arm64架构,可临时切换真机作为运行目标测试,如果真机可以正常构建,直接升级对应依赖到最新适配版本即可。 - Xcode配置问题
打开Xcode设置的Locations页,确认Command Line Tools选中的是当前正在使用的正式版Xcode,没有指向旧版本或Beta版Xcode。
排查技巧:不要只看日志末尾的报错,在Xcode构建日志中找到标红的
PhaseScriptExecution项,点开右边的展开按钮,就能看到具体是哪一步脚本报错、报的什么具体错误,不用盲目试方案。
内容的提问来源于stack exchange,提问作者treble18
相关产品推荐
相关产品推荐

