Xcode 为 iOS 生成 Swift 个包

Xcode generating Swift Packages for iOS

我正在尝试使用 XCode 11 的内置功能创建 Swift 包,但我遇到了问题。我能够为 Mac(平台 .macos)创建通用 Swift 包(无平台)和 Swift 包,但是当我尝试为 iOS 只是,编译器告诉我无法导入 UIKit。我看到消息:

“为 MacOS 构建时 UIKit 不可用。请考虑使用“#if !os(macOS)”有条件地导入此框架。 “

我正在使用 XCode 生成此包,而不是 Swift 包的任何命令行生成。该包没有关联的 Xcode 项目文件,它只是一个包。如果我围绕 iOS 代码放置条件编译,项目将成功构建,因为它跳过了 iOS 部分。但是,这种方式不会向我显示代码中可能存在的任何编译错误!

如果我编译并使用条件 macros 发布,然后我可以将 Swift 包导入到 iOS 项目中,然后代码编译。然而,调试需要永远,因为如果我在包中有编译错误,我必须编辑包,提交,推送,更新,然后 运行 在 Mac 项目中查看我是否得到对的。我想让 Swift 包正确编译代码,这样我就可以在那里修复它。

帮忙?谢谢!

以下是使用 Xcode 11.5.

为 iOS 创建 Swift 程序包的分步说明
  1. 选择文件 > 新建 > Swift 包。

  2. 接受默认名称 MyLibrary 并保存到桌面。

  3. 到Sources/MyLibrary中现有的MyLibrary.swift文件,添加一个UIKit的导入,为了更好的衡量,让我们实际参考一下到 UIKit class。让我们把所有东西都做成 public,让它看起来像这样:

    import UIKit
    public struct MyLibrary {
        public init() {}
        public var view = UIView()
    }
    
  4. MyLibraryTests.swift里面Tests/MyLibraryTests,删除整个final class MyLibraryTests声明。

  5. 在 window 的顶部,上面写着 MyLibrary > My Mac,将 My Mac 更改为 Generic iOS Device 或任何 iOS 您可能刚好安装了模拟器。

  6. 构建。

现在,为了证明这可行,将包导入到 iOS 项目中。您将能够 import MyLibrary 并创建一个 MyLibrary() 对象并获得它的 view.


就我个人而言,我认为这不是为 iOS 开发包的好方法;我宁愿将包添加到现有项目中,以便有一个测试平台,我可以在其中立即 运行 代码。不过,这证明您可以创建一个独立的包并为 iOS.

编译它