Xcode中Swift Package多分支依赖要求冲突报错如何解决?
Swift Package 多分支依赖冲突解决方案
触发的错误原因是Swift Package Manager不允许同一依赖包同时匹配两个不同的分支、标签或提交哈希规则:
Package1 is required using two different revision-based requirements (main and custom-branch), which is not supported
可行解决方案如下:
- 方案1:全局覆盖依赖规则(优先推荐)
如果你是SPM管理的项目(有Package.swift文件),在文件中添加dependencyOverrides配置强制所有子依赖都使用custom-branch分支的Package1,配置示例:
如果你是直接在Xcode项目中添加的包依赖,打开项目配置页的「Package Dependencies」栏目,确认Package1的分支选择为custom-branch即可,Xcode 14及以上版本会自动将该配置作为全局最高优先级规则,覆盖Package2的内部依赖声明。let package = Package( name: "你的应用名", dependencies: [ .package(url: "Package1仓库地址", branch: "custom-branch"), .package(url: "Package2仓库地址", branch: "main") // 原有配置无需修改 ], // 新增覆盖规则 dependencyOverrides: [ .package(url: "Package1仓库地址", branch: "custom-branch") ], targets: [ // 原有target配置无需修改 ] ) - 方案2:修改Package2的依赖配置
若Xcode版本过低不支持依赖覆盖,可以Fork Package2的仓库,将其Package.swift中声明的Package1依赖分支从main改为custom-branch,应用内引入你修改后的Fork版本Package2即可。 - 方案3:使用本地依赖临时调试
如果仅为临时调试需求,可将Package1代码克隆到本地,直接拖拽本地Package1文件夹到Xcode项目中,本地依赖的优先级高于所有远程依赖,会自动覆盖Package2的远程依赖声明,不会触发分支冲突。 - 方案4:固定依赖版本
若custom-branch的修改已经稳定,可以将应用中Package1的依赖、Package2中Package1的依赖都固定为custom-branch分支上的同一个提交哈希,两者版本规则一致后不会触发冲突。
内容的提问来源于stack exchange,提问作者Eilon
相关产品推荐
相关产品推荐

