4

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

我对此有一些疑问:

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

谢谢你。

4

2 回答 2

3
  • 我在两周前的答案中给出了关于如何使用 Xcode 创建框架目标的详细答案。这个问题与框架没有特别相关,所以我可以理解它是如何在搜索中出现的。(我也相信如果我在这里复制/粘贴它会不受欢迎,但如果我错了,我会这样做。)

  • 目前,只要您将 UIKit、Foundation 和核心代码分离到它们自己的框架中,Swift 框架目标就可以跨 Apple 平台兼容。(可能有更好的方法,但这是我所知道的最好的方法。

  • 关于 Swift核心代码:目前 Swift(仍然)在快速发展。Swift 3 开始在生产服务器端使用和一些 Linux 使用,但现在没有二进制兼容性(这是 Swift 4 的一部分),我会坚持使用 Apple 平台。

  • 我听说 Swift 2 和 3 之间的 Swift 版本兼容性存在冲突。我的意思是你可以在同一个项目中同时使用两者,但如果你这样做会遇到障碍。

于 2016-12-27T15:32:37.123 回答
3

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

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

Xcode Frameworks 路径是使用 Xcode 处理框架的标准的 pre-SPM 方式,这在别处进行了描述。您创建一个 Xcode 项目来定义您的框架。

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

于 2016-12-31T09:15:21.443 回答