Xcode 创建一个本身使用 cocoapods 的 swift 框架

Xcode Create a swift framework that itself uses cocoapods

我还是比较初学者。我正在尝试创建一个使用 firebase 数据库的超级应用程序(通过 cocoa pods 安装)。我正在为 driver 创建一个应用程序,另一个为骑手创建应用程序。我也在尝试通过尽可能地构建我的应用程序来开始。

在骑手应用程序中,我创建了一个数据库处理程序单例来控制对数据库的访问,包括将骑手添加到数据库的功能。两个应用共享一个通用的 firebase 数据库。我没有让两个应用程序都有单独的数据库处理程序(以及各种其他独立的处理程序),而是创建了一个独立的 swift 框架来保存处理程序。

我已将我的 swift 框架添加到骑手应用程序工作区和 driver 应用程序工作区(通过拖入框架 xcodeproj 文件)中我的工作区的顶层,然后消失了通过我读过的关于将框架构建到通用设备并将框架复制到实际的应用程序嵌入式二进制文件等的所有过程。独立地,两个应用程序工作区都正常工作......但是......我有两个问题舞台

  1. 如果我尝试同时打开两个工作区(即在 driver 应用程序上工作的同时在骑手应用程序上工作),Xcode 给我一个工作区完整性错误基本上给出错误 "couldn't load xcode project (ie the framework project) because it is already opened from another project"。该应用程序仍然运行正常,但错误(红色错误)仍然存在。我怎样才能解决这个问题?。
  2. 我想在数据库处理程序框架本身中使用 FirebaseDatabase ,但即使我在主应用程序中安装了 FirebaseDatabase,框架也看不到它,即 import FirebaseDatabase 行是显示 "no such module"。我还尝试在框架项目中分别通过 cocoa pods 安装 FirebaseDatabase,但仍然出现相同的 "no such module" 错误。如何获取框架代码以查看所需的 cocoa pod 框架

在两个应用程序项目之外拥有一个共享框架项目,但包含在它们的工作区中可能会导致问题。如果更改是重大更改,则在一个工作区中编辑框架可能会破坏另一个工作区中的应用程序。

我想你有两个选择。一种是将框架应用程序保存在中央存储库中,并将其检出到应用程序项目中。这让每个应用程序项目都可以使用他们熟悉的框架版本,如果一个发生变化,另一个在您告诉它更新之前看不到这些变化。

另一种选择是切换到包含应用程序和框架的单个工作区。有效地说,您将始终同时处理这两者,并且它们将始终保持同步。

我不能说找不到框架是什么问题,因为我不使用 CocoaPods,但我会检查每个项目设置中的所有框架搜索路径,看看它们是否搜索正确编译框架的目录。您不应在框架目标中复制任何依赖框架,但需要在应用程序目标中复制所有依赖框架。