swift - 将本地 Swift Package 目标添加到现有 Xcode 项目

标签 swift swift-package-manager xcode12

我有一个现有的 Xcode 项目,其中包含“传统”iOS 应用程序(“Foo”)和 iOS 框架(“FooLib”)的目标。几天前 Xcode 12 测试版发布时,我在同一个项目中添加了一个多平台 (iOS/macOS) SwiftUI 应用程序目标 ("Foo SwiftUI")。现在我想让我的框架也跨平台,所以我在项目中添加了一个多平台 Swift 包(“Foo 包”)并将 iOS 框架类移动到新的 Swift 包中。然后,我将此包添加到所有应用程序目标的 Frameworks、Libraries 和 Embedded Content 部分。在我清理项目并再次尝试之前,它似乎适用于所有应用程序目标。现在应用目标提示 Foo 包 无法解决:

Missing package project 'FooLib'.

我尝试将 FooLib 包删除并重新添加到应用程序目标,但它不再显示在要添加的框架和库的弹出列表中。 Xcode 项目中是否明确不支持本地 Swift 包?我是否需要将包放在它自己的 Git 存储库中并像任何其他第三方包依赖项一样设置它?

我最困惑的是,它看起来好像在我创建 Swift 包之后就可以工作,但在我清理项目并尝试重新运行应用程序目标之后却没有。 p>

最佳答案

好的,对不起我之前的回答。 — 很明显,如何通过远程 URL(例如 GitHub)与自己共享一个包。基本上,您扮演着开发人员和最终用户的角色,并且很清楚如何做到这一点。所以我认为这里需要一个分步教程,让你在本地与自己共享一个包,而无需实际提供它。

  1. 在 Xcode 中,选择 File > New > Swift Package 并将 MyLibrary 保存到桌面。

  2. 现在选择 File > New > Project,选择 iOS App 模板,并作为 App1 保存到桌面。

  3. 您现在打开了两个窗口。将 MyLibrary 从 MyLibrary 窗口中的项目导航器拖到 App1 窗口中项目导航器底部的空白区域中。

  4. 退出 Xcode。

  5. 再次启动 Xcode 并打开 App1。看,MyLibrary 图标现在具有分层内容。编辑应用目标并将 MyLibrary 库添加为依赖项。

  6. 您现在可以编辑 MyLibrary;您还可以在代码中导入 MyLibrary,您将能够使用公共(public)类型的任何公共(public)成员。

  7. 关闭 App1 并创建另一个项目 App2。重复步骤 3、4、5 和 6。

从现在开始,App1 和 App2 都可以“看到”MyLibrary。从任何一个中,您都可以编辑 MyLibrary,您可以导入它并使用它的代码。但是您不能同时打开 App1 和 App2。如果你这样做了,其中一个人会提示包裹丢失。因此,只要您一次只打开一个就可以了。

现在,如果你想摆脱这个限制,那就回到第一种处理这一切的方法:将包上传到 GitHub,并在你的项目中将其作为包依赖项获取。

关于swift - 将本地 Swift Package 目标添加到现有 Xcode 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62625674/

相关文章:

ios - 使应用程序出现在共享面板中以接受来自其他应用程序的选定文本

ios - 如何将 CAShapeLayer 与父 View 对齐

ios - 在UILabel IOS的​​特定部分添加文本 "...Read more"

swift - 从 SPM 解析多个 Package.test 测试目标

swift - 我应该将 .swiftpm 添加到 gitignore 吗?

ios - 嵌入 UITabBarController 中的 UISplitViewController 在 iOS 14 中表现得很奇怪

ios - SceneKit 不会在 Xcode 12 中填满屏幕

swift - 为什么只有内置的 UIColors 在这里工作?

swift - Xcode:架构选择器中缺少自己的 Swift 包

macos - XCode 12.0.1 和 12.1 不构建通用应用程序