简体   繁体   English

Swift Package 未版本化包的管理器问题(例如:firebase-ios-sdk)

[英]Swift Package Manager issues with unversioned Packages (example: firebase-ios-sdk)

I'm working on pulling out some of the functionality on one of my apps into a package so that I can centralize some reused code, and in doing so I pulled the dependency to firebase into my package. As soon as I did this, I can no longer get updates to my package because of the following error:我正在努力将我的一个应用程序的一些功能提取到 package 中,以便我可以集中一些重复使用的代码,在这样做的过程中,我将对 firebase 的依赖性提取到我的 package 中。一旦我这样做了,我由于以下错误,无法再更新我的 package:

Failed to resolve packages解析包失败

because no versions of mobile.ios.MYPACKAGE match the requirement 1.0.7..<2.0.0 and package mobile.ios.MYPACKAGE is required using a version-based requirement and it depends on unversion package firebase-ios-sdk, mobile.ios.MYPACKAGE >=1.0.6 is forbidden.因为没有版本的 mobile.ios.MYPACKAGE 符合要求 1.0.7..<2.0.0 和 package mobile.ios.MYPACKAGE 需要使用基于版本的要求,它取决于版本 package firebase-ios-sdk,移动。 ios.MYPACKAGE >=1.0.6 被禁止。 And because root depends on mobile.ios.MYPACKAGE 1.0.6..<2.0.0, version solving failed.又因为root依赖mobile.ios.MYPACKAGE 1.0.6..<2.0.0,导致版本解析失败。

This error makes sense since my Package.swift has a reference to firebase-ios-sdk , which is currently in beta.这个错误是有道理的,因为我的Package.swift引用了 firebase firebase-ios-sdk ,目前处于测试阶段。 This is alright because I don't plan on releasing my pacakge till firebase exits their beta later this year.这没关系,因为在今年晚些时候 firebase 退出测试版之前,我不打算发布我的包。

My reference to the package inside of dependencies array:我对 dependencies 数组内部的 package 的引用:

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

My reference to the firebase package inside of my targets array我在我的目标数组中引用了 firebase package

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

You can see I'm referencing the 6.32.spm-beta as firebase instructs you to do in their docs.你可以看到我引用了6.32.spm-beta作为 firebase 指示你在他们的文档中做。 How can I get past this issue so that I can work on integrating my package with my application while firebase is still in its beta?我怎样才能解决这个问题,以便在 firebase 仍处于测试阶段时,我可以将我的 package 与我的应用程序集成?

There is a version based dependency, if you are adding your package by version so you have to add dependencies by version not from branch:有一个基于版本的依赖项,如果您按版本添加 package,那么您必须按版本而不是分支添加依赖项:

Note: don't forget to tag your commits(in your package).注意:不要忘记标记您的提交(在您的包中)。

for example:例如:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM