如何使用 Swift 包管理器的 binaryTarget?

Mar*_*rty 2 swift swift-package-manager

我正在尝试使用 Swift Package Manager 的 binaryTarget 来包含此处提供的 Stripe xcframework https://github.com/stripe/stripe-ios/releases/tag/v19.3.0。包管理器没有抱怨,让我链接到它,但我无法导入它。我制作了一个示例存储库以在此处展示https://github.com/martyu/StripePackageTest。我错过了什么吗?

mat*_*att 6

首先,你的例子是不可测试的,因为你忘记提供版本标签,所以这不是一个真正的包。

其次,更重要的是,我认为您对包如何作为二进制目标工作有误解。您似乎认为您的 Swift 包可以包含查看 XCFramework 的代码。(这就是您尝试import在包的源代码中的框架模块中使用的原因。)这是错误的。它是导入框架模块的应用程序。包只是分发框架的一种方式。

换句话说,您可以编写源代码包或框架承载包。一个包裹不能同时存在。

但是当然您可以编写依赖于框架承载包的源代码包。

  • @matt我对这个答案和文档顶部附近看到的相互矛盾的注释感到困惑:https://developer.apple.com/documentation/swift_packages/distributing_binary_frameworks_as_swift_packages“Swift包可以包含源文件和二进制文件。对于包含封装闭源二进制文件的源代码的包来说,这种用例很常见。” (2认同)