我有一个现有的Xcode项目,其中包含"传统"iOS应用程序("Foo"(和iOS框架(">FooLib"(的目标。几天前,当 Xcode 12 测试版发布时,我在同一项目中添加了一个多平台 (iOS/macOS( SwiftUI 应用程序目标(">Foo SwiftUI">(。现在我也想让我的框架跨平台,所以我在项目中添加了一个多平台 Swift 包(">Foo包"(,并将 iOS 框架类移到新的 Swift 包中。然后,我将此包添加到所有应用目标的框架、库和嵌入式内容部分。它似乎适用于所有应用程序目标,直到我清理项目并重试。现在,应用程序目标抱怨无法解析Foo 包:
Missing package project 'FooLib'.
我尝试删除并将FooLib包重新添加到应用程序目标中,但它不再显示在要添加的框架和库的弹出列表中。本地 Swift 包在 Xcode 项目中是否明确不受支持?我是否需要将包放在其自己的 Git 存储库中,并像任何其他第三方包依赖项一样对其进行设置?
我最困惑的是,它看起来在我创建 Swift 包后立即工作,但在我清理项目并尝试重新运行应用程序目标之后就不行了。
好的,对不起我之前的回答。 — 很明显,如何通过提供它的远程 URL(例如 GitHub(与自己共享包。基本上,您同时扮演开发人员和最终用户的角色,并且很清楚如何做到这一点。所以我认为这里需要的是一个分步教程,在本地与自己共享包而不实际提供它。
-
在 Xcode 中,选取"文件>新建">"Swift 包",然后存储为 MyLibrary 到桌面。
-
现在选择"文件>新建>项目",选择"iOS 应用程序"模板,然后另存为 App1 到桌面。
-
您现在打开了两个窗口。将"我的库"从"我的库"窗口中的项目导航器拖到"App1"窗口中项目导航器底部的空白区域。
-
退出 Xcode。
-
再次啟動 Xcode 並開啟 App1。看,"我的库"图标现在具有分层内容。编辑应用目标并将 MyLibrary 库添加为依赖项。
-
您现在可以编辑 MyLibrary;您还可以在代码中导入 MyLibrary,并且您将能够使用任何公共类型的公共成员。
-
关闭 App1 并创建另一个项目 App2。重复步骤 3、4、5 和 6。
从现在开始,App1 和 App2 都可以"看到"MyLibrary。从任何一个,你都可以编辑MyLibrary,你可以导入它并使用它的代码。但是,您不能同时打开App1和App2。如果您这样做,其中一个会抱怨包裹丢失。所以只要你一次只打开一个,你就会没事的。
现在,如果你想摆脱这个限制,那么回到处理这一切的第一种方法:将包上传到GitHub,并在你的项目中作为包依赖项获取它。
对我来说,它使用Xcode Workspaces"围绕"本地项目和Swift包工作。
- 创建应用项目
- 创建快速包
- 为应用项目创建工作区
- 将应用项目添加到工作区
- 将 Swift 包也添加到工作区
- 在应用目标"常规"设置中,从当前工作区"嵌入并签名"Swift 包
之后您可能需要重新启动 Xcode 才能接受更改......