如何在嵌入式框架中使用Cocoapods?

时间:2014-06-12 02:46:19

标签: xcode cocoa-touch cocoapods xcode6

我在新项目中使用嵌入式框架来自定义视图,以利用Xcode 6中的新@IBDesignable内容,我想用Facebook的Pop来制作所述视图。我使用Cocoapods将Pop添加到项目中,但嵌入式框架无法访问这些文件('POP/pop.h' file not found)。

我尝试将与Cocoapods相关的构建阶段从应用程序目标复制到自定义框架目标,但它们不能按原样运行。 的工作原理是直接将Pop文件夹复制到嵌入式框架中,但Xcode告诉我,我必须将所有尖括号<POP/pop.h>更改为引号"POP/pop.h"。我假设有一种更好的方式,而且我正在消隐。

2 个答案:

答案 0 :(得分:51)

假设您的Podfile中使用的是link_with 'MyCustomFramework',其中“我的自定义框架”和#39;是您的嵌入式框架名称,并已运行pod install。选择您的项目文件(右上角的蓝色),然后进入&#34; 构建设置&#34;。然后,找到&#39; 允许框架模块中的非模块化包含&#39;对于项目文件(蓝色)和自定义框架目标(例如,MyCustomFramework - 橙色&#34;饭盒案例&#34;图标),将其设置为

Setting build settings for non-modular includes

然后,您可以在主MyCustomFramework.h文件中包含可可豆荚。 Including CocoaPods in CustomFramework

然后只需导入&#39; @import MyCustomFramework;&#39;在您的应用程序目标中,您将获得其余的CocoaPods。 (例如,您可以访问来自ObjectiveSugar的每个人)。 Importing CustomFramework into AppDelegate

是否应该执行此操作是一个单独的问题,但这允许您的自定义框架本身包含CocoaPods库,然后允许Application目标只包含您的自定义框架并获取所有CocoaPods。

对于多张图片感到抱歉,但我喜欢视觉效果。

答案 1 :(得分:3)

我猜你正在修改框架以使用Pop。在这种情况下,您还需要添加Pop标题&#39;框架的路径构建设置&#39;搜索标题路径。

但是如果您正在修改框架,您也可以为它创建一个podspec并让CocoaPods处理所有内容(并向创建者发送拉取请求?)。


至于赏金问题。

框架永远不应该嵌入其他库。例如,如果您想在库中使用AFNetworking:

  • 声明您自己的框架安装说明中需要AFNetworking。
  • 如果您分发二进制文件,则只需在本地针对AFNetworking标头构建。用户在链接他们的应用程序时需要提供自己的AFNetworking。
  • 如果您使用框架分发源代码(如果用户必须自己构建),请在安装步骤中询问在框架中设置AFNetworking标头路径构建设置标头搜索路径并将其预设为公共路径,例如{{ 1}}等等。

然后它可以工作但你有复杂的安装说明,用户必须手动添加资源(如果有的话),很难控制用户添加的AFNetworking版本,并且大多数人永远不会升级你的框架,因为它可能会破坏他们的设置。通过创建podspec来支持CocoaPods的所有好理由(如果你真的需要,可以继续维护框架/静态库项目。)

相关问题