You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac Mini M1设备上使用Flutter构建iOS应用时遭遇Multiple commands produce错误求助

解决Flutter iOS打包时Reachability.framework冲突问题

我之前帮不少开发者处理过这类问题,在M1芯片的Mac上用Flutter打包iOS应用时出现这个错误,本质是两个不同的Target(Reachability和ReachabilitySwift)都试图生成同名的Reachability.framework到同一个目录,导致Xcode的命令执行冲突。下面是几个亲测有效的解决方法:

方法一:修改Target的输出路径,避免冲突

  1. 打开Flutter项目iOS目录下的Runner.xcworkspace(一定要打开工作空间,别用单个.xcodeproj文件)
  2. 在Xcode左侧导航栏找到Reachability和ReachabilitySwift这两个Target
  3. 分别选中它们,切换到Build Settings标签页
  4. 在搜索框输入Per-configuration Build Products Path,定位到这个配置项
  5. 给两个Target设置不同的输出路径:比如给Reachability设为$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Reachability,给ReachabilitySwift设为$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/ReachabilitySwift
  6. 保存设置后,重新执行打包命令即可

方法二:排查并移除重复的依赖

如果你的项目里同时引入了OC版本的Reachability和Swift版本的ReachabilitySwift,大概率是Flutter插件的依赖重复导致的:

  • 打开项目根目录的pubspec.yaml,检查所有依赖的插件,看看是不是有两个插件分别依赖了这两个库
  • 找到重复的根源,移除其中一个不需要的依赖(比如如果项目用Swift开发,优先保留ReachabilitySwift)
  • 执行flutter pub get更新依赖,然后重新打包

方法三:清理缓存,消除遗留冲突

有时候Xcode的DerivedData缓存会残留旧的构建文件,导致冲突:

  1. 先在终端执行flutter clean清理Flutter项目的缓存
  2. 回到Xcode,点击菜单栏的Product -> Clean Build Folder(快捷键Cmd+Shift+K)
  3. 手动删除DerivedData目录:就是错误提示里的/Users/***/Library/Developer/Xcode/DerivedData/Runner-btwffzljdlaqbxbugphdlprtatcr/,直接删掉整个文件夹
  4. 重新执行flutter build ios或者在Xcode里尝试打包

另外,M1芯片的Mac要注意架构兼容性,你可以检查下Xcode的Build Settings里的Excluded Architectures,在Debug模式下排除arm64(不过这一步更多是解决运行时的架构问题,和当前冲突无关,但可以作为辅助检查项)


内容的提问来源于stack exchange,提问作者nitin_j_sun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 09:52:28