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 程序包的分步说明
选择文件 > 新建 > Swift 包。
接受默认名称 MyLibrary 并保存到桌面。
到Sources/MyLibrary中现有的MyLibrary.swift文件,添加一个UIKit的导入,为了更好的衡量,让我们实际参考一下到 UIKit class。让我们把所有东西都做成 public,让它看起来像这样:
import UIKit
public struct MyLibrary {
public init() {}
public var view = UIView()
}
在MyLibraryTests.swift
里面Tests/MyLibraryTests,删除整个final class MyLibraryTests
声明。
在 window 的顶部,上面写着 MyLibrary > My Mac,将 My Mac 更改为 Generic iOS Device 或任何 iOS 您可能刚好安装了模拟器。
构建。
现在,为了证明这可行,将包导入到 iOS 项目中。您将能够 import MyLibrary
并创建一个 MyLibrary()
对象并获得它的 view
.
就我个人而言,我认为这不是为 iOS 开发包的好方法;我宁愿将包添加到现有项目中,以便有一个测试平台,我可以在其中立即 运行 代码。不过,这证明您可以创建一个独立的包并为 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 程序包的分步说明选择文件 > 新建 > Swift 包。
接受默认名称 MyLibrary 并保存到桌面。
到Sources/MyLibrary中现有的MyLibrary.swift文件,添加一个UIKit的导入,为了更好的衡量,让我们实际参考一下到 UIKit class。让我们把所有东西都做成 public,让它看起来像这样:
import UIKit public struct MyLibrary { public init() {} public var view = UIView() }
在
MyLibraryTests.swift
里面Tests/MyLibraryTests,删除整个final class MyLibraryTests
声明。在 window 的顶部,上面写着 MyLibrary > My Mac,将 My Mac 更改为 Generic iOS Device 或任何 iOS 您可能刚好安装了模拟器。
构建。
现在,为了证明这可行,将包导入到 iOS 项目中。您将能够 import MyLibrary
并创建一个 MyLibrary()
对象并获得它的 view
.
就我个人而言,我认为这不是为 iOS 开发包的好方法;我宁愿将包添加到现有项目中,以便有一个测试平台,我可以在其中立即 运行 代码。不过,这证明您可以创建一个独立的包并为 iOS.
编译它