繁体   English   中英

使用 Swift Package 管理器为二进制目标添加 package 依赖项

[英]Add package dependency for a binary target with Swift Package Manager

我正在开发一个封闭源代码框架,它将使用 SPM 作为 XCFramework 分发。 这要归功于 swift 工具 5.3 中的新binaryTarget 在框架具有依赖关系之前,这可以正常工作。

416 - 二进制框架状态... binary frameworks cannot depend on Packages. ,但这是在 5.3 之前,二进制目标根本不可能。 在 Swift 论坛上,有一个建议的解决方法,基本上围绕添加一个虚拟目标来列出依赖项( binaryTarget初始化程序没有dependencies项参数)。

解决方法一直有效,直到依赖项具有自己的依赖项。 例如,没有任何依赖关系的Lottie可以正常工作,但是有很多依赖关系的Auth0失败并出现错误Missing required modules: 'Auth0ObjectiveC', 'SimpleKeychain' 即使使用 SPM 将 Auth0 直接添加到客户端项目也无法修复这些错误。

这是我的 Package.swift 部分工作。

// swift-tools-version:5.3
import PackageDescription
let package = Package(
    name: "MyFramework",
    platforms: [
        .iOS(.v13)
    ],
    products: [
        .library(name: "MyFramework", targets: ["MyFramework", "MyFramework-Dependencies"])
    ],
    dependencies: [
        .package(name: "Auth0", url: "https://github.com/auth0/Auth0.swift.git", from: "1.30.1")
    ],
    targets: [
        .binaryTarget(name: "MyFramework", path: "MyFramework.xcframework"),
        .target(name: "MyFramework-Dependencies", dependencies: ["Auth0"], path: "MyFramework-Dependencies")
    ])

有可能实际上有一个二进制框架依赖于 package? 如果不是,那么为二进制框架分配依赖项的正确方法是什么?

我们通过创建一个依赖于二进制框架和其他依赖项的包装器目标解决了这个问题。 请参阅此处的示例。

暂无
暂无

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

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