Swift 包管理器与未版本控制的包有关(例如:firebase-ios-sdk)

Uno*_*ome 7 ios firebase swift swift-package-manager

我正在努力将我的一个应用程序上的一些功能提取到一个包中,以便我可以集中一些重用的代码,在这样做的过程中,我将对 firebase 的依赖项拉到我的包中。一旦我这样做了,由于以下错误,我无法再获得我的包的更新:

无法解析包

因为没有任何版本的 mobile.ios.MYPACKAGE 符合要求 1.0.7..<2.0.0 并且使用基于版本的要求需要包 mobile.ios.MYPACKAGE 并且它取决于 unversion 包 firebase-ios-sdk, mobile。 ios.MYPACKAGE >=1.0.6 被禁止。并且因为 root 依赖于 mobile.ios.MYPACKAGE 1.0.6..<2.0.0,版本解析失败。

这个错误是有道理的,因为我的 Package.swift有一个对 的引用firebase-ios-sdk,它目前处于测试阶段。没关系,因为我不打算在今年晚些时候 firebase 退出测试版之前发布我的 pacakge。

我对依赖项数组中的包的引用:

dependencies: [
    .package(name: "Firebase",
               url: "https://github.com/firebase/firebase-ios-sdk.git",
               .branch("6.32-spm-beta")),
...
Run Code Online (Sandbox Code Playgroud)

我对目标数组中的 firebase 包的引用

    targets: [
    .target(
        name: "MYPACKAGE",
        dependencies: ["Alamofire", "SwiftyJSON",
            .product(name: "FirebaseAuth", package: "Firebase"),
            .product(name: "FirebaseCrashlytics", package: "Firebase"),
            .product(name: "FirebaseAnalytics", package: "Firebase"),
Run Code Online (Sandbox Code Playgroud)

您可以看到我6.32.spm-beta在他们的文档中引用了firebase 指示您执行的操作。我怎样才能解决这个问题,以便我可以在 firebase 仍处于测试阶段时将我的包与我的应用程序集成?

小智 2

如果您按版本添加包,则存在基于版本的依赖项,因此您必须按版本而不是从分支添加依赖项:

注意:不要忘记标记您的提交(在您的包中)。

例如:

dependencies: [
    .package(name: "Firebase",
     url: "https://github.com/firebase/firebase-ios-sdk.git",from: "1.0.0")
]
Run Code Online (Sandbox Code Playgroud)