Swift Package Manager与未版本化的软件包有关的问题例如:firebase-ios-sdk

问题描述

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

无法解析软件包

因为没有任何版本的mobile.ios.MYPACKAGE符合要求1.0.7 .. = 1.0.6。 并且由于root依赖于mobile.ios.MYPACKAGE 1.0.6 ..

错误是有道理的,因为我的Package.swift引用了firebase-ios-sdk(目前处于测试版)。没关系,因为在Firebase今年下半年退出Beta之前,我不打算发布pacakge。

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

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

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

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

您可以看到我正在引用6.32.spm-beta,因为firebase指示您在他们的文档中这样做。我该如何解决这个问题,以便在Firebase仍处于测试版时将其与应用程序集成在一起?

解决方法

有一个基于版本的依赖,如果你是按版本添加你的包,那么你必须按版本而不是从分支添加依赖:

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

例如:

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