2

我按照以下教程创建了一个静态库:

https://github.com/jverkoey/iOS-Framework/#developing-the-framework-as-a-dependent-project

在我尝试将 RestKit 合并到我的静态库之前,这一切都有效。我完全迷失了。我应该将 RestKit 库包含到我的静态库中还是只包含在将使用我的库的应用程序中?

如果我的库中不包含 RestKit,则无法编译它,因为它依赖于另一个库(RestKit),那么解决方法是什么?

我试图到处寻找,但没有找到一个好的分步教程来创建一个本身依赖于其他静态库的静态库。

4

2 回答 2

1

我所做的就是使用他们的 git-submodule 指令将 RestKit 添加到我的静态库。然后我对将使用我的静态库的项目执行了完全相同的步骤,除了:

  1. 我没有将 RestKit 添加到构建阶段的“目标依赖”部分
  2. 我没有将 libRestKit.a 添加到“Link Binary With Libraries”部分。所有其他参考仍然需要添加。

然后我可以在我的静态库和我的 iOS 项目中引用 RestKit。

可可豆超级黑客

我能够使用可可豆荚进行此操作,但仅当这是您唯一的可可豆荚项目时才有效。我从一个工作区中的所有项目开始。然后我让我的单个 podfile 将 RestKit 安装到我的静态库和所有将引用我的静态库的项目中。然后对于我想引用我的静态库的每个项目,我删除了“链接框架和库”下的 pod 引用。一切都按预期工作。

正如您所料,这可能会破坏所有其他 pod 引用(除非您通过一个静态库管理它们),但它似乎确实有效。

于 2013-05-08T13:15:10.763 回答
0

在提出问题后不久,如果有人遇到类似问题,我终于设法让它在这里工作:

按照本节中的说明创建一个实际的应用程序。添加库后,将您使用的所有其他库添加到应用程序。(在我的情况下,它是 RestKit 框架,将其添加为子模块,而不是与 cocoapods 一样,因为它无法使其正常工作)。

添加所有库后,按照第三方库说明对应用程序进行修改,并对静态库进行相同的修改。

例如,对于 Restkit,我必须添加

-ObjC -all_load

其他链接器标志并添加

"$(BUILT_PRODUCTS_DIR)/../../Headers"

到我的静态库中的标题搜索路径。

由于未找到,我仍然无法构建<RestKit/Restkit.h>,因此我需要更改框架的构建顺序以确保 Restkit 在我的库之前构建。

这是在构建菜单的编辑方案中完成的。确保所有依赖库都在您的库之上(如果您的静态库或依赖库尚未在其中添加它们,请使用“+”)

在此处输入图像描述

之后一切都对我有用。我不确定这是否是最好的方法,或者将第三方库包含在您的统计库中是否会更好。

更新我在尝试构建我的库时仍然遇到问题,如果有人有更好的解决方案或者可以阐明如何创建一个依赖于其他框架的静态框架,我将不胜感激。

于 2013-04-30T13:26:24.487 回答