首页 > 解决方案 > 将本地 Swift Package 目标添加到现有 Xcode 项目

问题描述

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

Missing package project 'FooLib'.

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

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

标签: swiftswift-package-managerxcode12

解决方案


好的,对不起我之前的回答。— 很明显,如何通过远程 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,您将能够使用公共类型的任何公共成员。

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

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

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


推荐阅读