将本地的Swift Package目标添加到现有的Xcode项目中

3

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

Missing package project 'FooLib'.

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

我最困惑的是,创建Swift包后似乎 已经有效,但在清理项目并尝试重新运行应用程序目标后就不行了。

2个回答

10
很抱歉之前的回答可能不太准确。通过远程URL(例如GitHub)共享包很明显是如何实现的。你既扮演开发者又扮演终端用户,操作方法很明确。因此我认为需要一个逐步指南来介绍如何在本地共享包而不必实际发布它。
1. 在Xcode中选择"文件" > "新建" > "Swift Package",并将其另存为"MyLibrary"到桌面上。 2. 现在选择"文件" > "新建" > "项目",选择iOS应用程序模板,并将其另存为"App1"到桌面上。 3. 您现在打开了两个窗口。从"MyLibrary"窗口中的项目导航器中将"MyLibrary"拖动到"App1"窗口的项目导航器的空区域中。 4. 退出Xcode。 5. 再次启动Xcode并打开"App1"。看,MyLibrary图标现在具有层次结构的内容。编辑应用程序目标并将"MyLibrary"库添加为依赖项。 6. 现在您可以编辑MyLibrary;您还可以在代码中导入MyLibrary,并能够使用任何公共类型的公共成员。 7. 关闭"App1"并创建另一个项目"App2"。重复步骤3、4、5和6。 8. 从现在开始,"App1"和"App2"都可以“看到”MyLibrary。从任何一个应用程序中,您都可以编辑MyLibrary,导入它并使用其代码。但是您不能同时打开"App1"和"App2"。如果这样做,其中一个将抱怨缺少该包。只要一次只打开一个应用程序,就不会出现问题。 9. 现在,如果您想摆脱这个限制,那么回到处理所有这些的第一种方式:将包上传到GitHub并作为包依赖项在您的项目中获取它。

1

对于我来说,使用Xcode Workspaces“围绕”本地项目和Swift Packages运作良好。

  • 创建应用程序项目
  • 创建Swift Package
  • 为应用程序项目创建Workspace
  • 将应用程序项目添加到Workspace中
  • 也将Swift Package添加到Workspace中
  • 在应用程序目标的“General”设置中,“embed&sign”当前Workspace中的Swift Package

您可能需要重新启动Xcode才能使更改生效...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接