将Unity作为库集成到含Firebase的iOS原生项目出现Multiple commands报错
问题根因
你遇到的Multiple commands produce报错本质是:同一个工作空间内同时引入了原生项目、Unity导出项目两套独立的Pods依赖库,同名依赖(比如报错中的BoringSSL-GRPC)的两个target会往完全相同的构建产物路径输出文件,触发Xcode的构建冲突。
解决步骤
- 移除Unity项目的独立Pod配置
删除Unity导出的Xcode项目目录下的Podfile、Podfile.lock、Pods文件夹、Unity-iPhone.xcworkspace,不再单独为Unity项目执行pod install。
- 移除Unity项目的独立Pod配置
- 合并依赖到原生项目的Podfile
对照原Unity项目Podfile中的所有依赖条目,全部补充到原生项目的Podfile中,确保两边用到的Firebase及相关依赖版本完全一致,避免后续出现符号缺失或版本冲突。
- 合并依赖到原生项目的Podfile
- 重新安装依赖
在原生项目目录下执行pod install --repo-update,所有依赖(包括Unity需要的Firebase组件)统一由原生项目的Pods管理,从根源消除重复的依赖target。
- 重新安装依赖
- 调整Unity项目的构建设置
打开工作空间中的Unity-iPhone.xcodeproj,在构建设置中找到Header Search Paths,添加原生项目Pods目录的头文件搜索路径(根据你本地的相对路径调整,一般为$(SRCROOT)/../Pods/Headers,设置为递归搜索),确保Unity代码能正常找到Firebase相关的头文件。
- 调整Unity项目的构建设置
- 清理缓存重新构建
执行Xcode菜单栏Product > Clean Build Folder清理旧的构建缓存,同时删除DerivedData目录下的对应项目缓存,重新启动构建即可解决报错。
- 清理缓存重新构建
临时规避方案(不推荐)
如果仅需要临时验证功能,可在Xcode中打开File > Workspace Settings,将构建系统切换为Legacy Build System(遗留构建系统),可以绕过多命令冲突检查,但该方案没有解决依赖重复的本质问题,后续可能出现运行时符号冲突崩溃。
内容的提问来源于stack exchange,提问作者vishnu venugopal
相关产品推荐
相关产品推荐

