簡體   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