我正在开发一个封闭源代码框架,它将使用 SPM 作为 XCFramework 分发。这要归功于binaryTarget
swift tools 5.3 中的新功能。在框架具有依赖关系之前,这可以正常工作。
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")
])
有可能实际上有一个二进制框架依赖于一个包吗?如果不是,那么为二进制框架分配依赖项的正确方法是什么?