在子项目(框架项目)中使用 3rd 方 pod

Use 3rd party pod in sub-project (framework project)

我正在使用 XCode 8 + Swift 3.

我创建了一个名为“MyApp”的新 iOS 项目。

然后,我创建了一个 Cocoa touch framework 项目,命名为 "MySubProject"。 (想法是让 MyApp 项目访问 MySubProject 代码。)

它们在同一层文件夹中:

- MyApp/
- MySubProject/

我将 MySubProject 添加到 MyApp 项目中,链接了 MySubProject 框架。一切正常。我的项目结构如下所示:

到这里为止一切正常! (MyApp代码可以访问MyService代码)

现在,我需要 MySubProject 来使用 Alamofire 与后端通信。因此,在 MySubProject/ 下,我使用 CocoaPod 设置了 Alamofire,它创建了 MySubProject.xcworkspace.

我想我需要删除之前的 MySubProject.xcodeproj 并使用 MySubProject.xcworkspace,所以我删除了 MySubProject.xcodeproj 的引用并将 MySubProject.xcworkspace 添加到 MyApp,它看起来像这样:

如您所见,我现在看不到 MySubProject 的源代码。

在 Framework 子项目中通过 CocoaPod 使用 Alamofire 或任何第三方库的正确方法是什么?

=====更新====== 我需要将 Alamofire 添加到 MySubProject,而不是 MyApp。我按照 Alamofire 官方网站的说明手动将 Alamofire 添加到 MySubProject,然后项目结构如下所示:

- MyApp
  - MySubProject.xcodeproj
    -Alamofire.xcodeproj

之后,我可以在MySubProject中访问Alamofire,没有编译错误。但是,当我在模拟器中 运行 我的应用程序时,我得到了 运行 时间错误:

Referenced from: /Users/myname/Library/Developer/Xcode/DerivedData/MyApp-hezjlyvzxnavccenabxdepgftbrg/Build/Products/Debug-iphonesimulator/Alamofire.framework/Alamofire
  Reason: image not found

如何解决?

您可以通过三种不同的方式执行此操作。

1) 直接将依赖添加到你的MyApp项目中

2) 构建MySubProject 并将包含依赖项的库添加到MyApp 项目中。 (假设 MySubProject 将是一个库)

3) 使用自定义 pods 时,您可以在 .podspec 文件中提供依赖项。通过这种方法,我可以导入我自己的库(作为 pods),它依赖于其他 Cocoapods.

编辑:仔细查看后我们得出结论,上述方法不符合leem.fin的具体要求。不可能将一个框架包含到另一个框架中。但还有其他两个选择:

1) 除了您的框架之外,还运送辅助框架并link它到您自己的框架。这样 MySubProject 和 MyApp 都可以 link 该框架。

2) 将源代码直接导入 MySubProject,这样它们将与 MySubProject.framework 一起编译,并且它们可供其他目标访问,只需 link 到 MySubProject。

最简单的方法是将源代码直接导入 MySubProject。如果您不复制资源而是 link 到文件夹,您可以 git 在需要获取最新更改时更新源。