2013-04-30 133 views
2

我也跟着下面的教程创建一个静态库:直到我尝试纳入RestKit到我的静态库创建依赖于其他的静态库(RestKit)静态库

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

它所有的作品。在那里,我完全迷失了。我是否应该将RestKit库包含到我的静态库中,或者只包含将使用我的库的App?

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

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

+0

我一直在遇到同样的问题。我能够通过向静态库和使用cocoapods引用我的库的项目添加restkit引用来获得编译代码。但是,并非所有的东西都可以工作。尽管编译器似乎认为他们在那里,但我失去了调用扩展方法的能力。 – lehn0058 2013-04-30 13:06:27

+0

我想我会有我的静态库引用RestKit,然后让该库提供一个抽象接口到我的其他项目进行网络调用。如果RestKit改变它的界面(或者如果我决定在未来使用差异库),从长远来看,这会更好。 – lehn0058 2013-05-07 16:50:34

回答

0

矮个子问我终于设法得到它在这里工作的步骤,如果有人有类似的问题的问题后:

创建一个实际应用的解释INT this部分。添加库后,将所有其他库用于应用程序。 (在我的情况下,它是RestKit框架,将它作为子模块添加,而不是与可可豆荚一样使用cocoapods,但它没有设法使其正常工作)。

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

例如对于Restkit我不得不

-ObjC -all_load

添加到其它链接器标记并添加

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

头搜索路径我的静态库里面。

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

这是在构建菜单的编辑方案内完成的。确保所有相关的库是在你的库顶(如果你的静态库或依赖库是不是已经在那里用“+”添加的话)

enter image description here

之后一切为我工作。我不确定这是否是最好的方法,或者在统计库中包含第三方库会更好。

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

+0

你有什么事吗? – 2014-09-30 04:25:33

+0

我改变了我的设置,现在使用Cocoapods及其库的实现。我现在可以为我的图书馆使用本地git回购并将其整合到我的所有项目中。如果你需要帮助设置它,请告诉我 – Aranir 2014-09-30 07:35:39

1

我所做的工作是使用他们的git子模块指令here将RestKit添加到我的静态库。然后我执行的是要使用我的静态库除了在项目中完全相同的步骤:

  1. 我没加RestKit到构建阶段的“目标相关”部分
  2. 我没有添加libRestKit.a添加到“Link Binary With Libraries”部分。所有其他引用仍需要添加。

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

的CocoaPods MEGA HACK

我能得到与可可豆荚这方面的工作,但如果这是你唯一的CocoaPods项目只会工作。我开始将所有项目都放在一个工作区中。然后我让我的单个podfile将RestKit安装到我的静态库以及所有将引用我的静态库的项目。然后,对于我想引用静态库的每个项目,我删除了“链接的框架和库”下的pod参考。然后一切都按预期工作。如你所料,这可能会打破所有其他的pod引用(除非你通过一个静态库管理它们),但它似乎工作正常。