swift - 如何构建自定义 Swift 框架以及它与 SPM 有何关系?

标签 swift swift-package-manager

我目前正在构建我真正想用作框架的代码,方法是能够像使用 Apple 框架一样import MyCustomFramework(将来我也想分发它们)。

我对此有一些疑问:

  • 构建我想要的框架的最简单方法是什么?是否可以直接在 Xcode 中执行此操作,还是需要在终端中使用命令行工具?
  • 这个框架是否与多个平台兼容(我正在考虑所有 Apple 平台,但也考虑 Swift 支持的其他平台,例如 Linux)。
  • Swift 框架和 Swift 包管理器之间的确切联系是什么?我需要 SPM 来构建我的框架,还是这两种不同的工具?

谢谢。

最佳答案

目前,Swift Package Manager (SPM) 和 Xcode Frameworks 遵循不同的路径。对于 Linux,您必须遵循 SPM 路径,因为编译 Linux swift 应用程序的唯一方法是使用 SPM。对于 macOS 命令行应用程序,您也可以遵循 SPM 路径。对于 iOS 应用程序和 macOS UI 应用程序,您必须遵循 Xcode Frameworks 路径

对于 SPM 路径,您使框架的项目SPM 启用:添加 Package.swift 文件并根据 SPM 约定设置项目的文件布局.该项目还必须是一个 git 存储库。然后可以将项目的 git 存储库指定为对其他支持 SPM 的框架/应用程序的依赖项。每个启用 SPM 的项目都可以随时使用 swift package generate-xcodeproj 命令转换为 Xcode 项目。

Xcode Frameworks 路径是使用 Xcode 框架的标准、SPM 之前的方式,这在其他地方有描述。您创建一个 Xcode 项目来定义您的框架。

因此,如果您希望您的框架既用于支持 SPM 的 Linux 和 macOS 命令行应用程序项目,又用于支持 Xcode 的 iOS 和 macOS UI 应用程序项目,您必须遵循双重路径。您使您的项目启用 SPM 并添加一个 Xcode 项目来定义您的框架。您必须两次维护您的项目信息 - 在 Package.swift 文件和 Xcode 项目中。

关于swift - 如何构建自定义 Swift 框架以及它与 SPM 有何关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41345556/

相关文章:

swift - 与 iOS 相比,我如何有条件地依赖桌面系统库?

swift - SPM - 包包含修改后的依赖项

ios - 用多个图像和标签构建 png 文件

ios - 使用 UIDocumentPickerViewController 导入文档警告 "fileprovider plugin was invalidated"

ios - 如何在 swift 中使用 JSTileMap

Swift 包和相互冲突的依赖项

swift - 集成具有本地 Swift 包 : how to avoid invalidManifestFormat errors? 的远程 Swift 包

swift - XCGLogger:对成员 'log' 的引用不明确

ios - 使用 Alamofire 4.0 (Swift 3) 下载文件

swift - 如何将 xcassets 目录迁移到 Swift 包管理器?