我有一个 iOS 多存储库应用程序,它使用 cocoapods 来同步多个框架,我正在尝试迁移到 swift 包管理器,无论我在尝试连接所有依赖项时遇到问题,这是我的架构:
我的应用程序位于一个存储库中,其余包位于不同的存储库中,该包是一个功能模块,在内部模块化以分离 UI,业务逻辑和网络层,它们每个都是不同的包,这里是更好地解释它的图表:
由于 MultiFrameWorkPackage 依赖于其他框架,我需要在本地引用它,但是当我尝试从 MyApp.xcodeproj 远程获取 MultiFrameWorkPackage 时,我收到以下错误:
使用基于修订的版本需要包“multiframeworks” 要求,它取决于本地包“frameworka”,这不是 支持
是否有任何解决方法可以通过 SPM 实现这种架构?
以下是代码示例,您甚至可以尝试运行它:
终于成功了,一开始我想要不同的 Package.swift 文件并将它们作为单独的包同步,最终我只有 1 个 Package.swift 来同步所有文件和目标,这里有一些关键点,以及最终的 Package .swift 文件:
path: ../FrameworkX
。.
let package = Package(
name: "MultiFrameworksPackage",
products: [
.library(
name: "MultiFrameworksPackage",
targets: ["MultiFrameworks", "FrameworkA", "FrameworkB"]
)],
targets: [
.target(
name: "MultiFrameworks",
dependencies: [
"FrameworkA"
],
path: "Sources"
),
.target(
name: "FrameworkA",
dependencies: [
"FrameworkB"
],
path: "FrameworkA"
),
.target(
name: "FrameworkB",
dependencies: [
],
path: "FrameworkB"
)
]
)