创buildCocoa Touch框架时,我可以使用CocoaPods吗?

我正在创build一个新的Cocoa Touch框架(MyFramework.framework),它将依赖于Alamofire。 这个框架将被写入Swift中。 作为一个testing,我开始了一个新的Cocoa Touch Framework项目:

File > New > Project > Framework & Library > Cocoa Touch Framework 

然后,在我执行的terminal:

 pod init 

在这个项目目录下。 在新创build的Podfile中,我添加了以下内容:

 source 'https://github.com/CocoaPods/Specs.git' # Uncomment this line to define a global platform for your project platform :ios, '8.0' # Uncomment this line if you're using Swift use_frameworks! pod 'Alamofire', '~> 3.0' 

再次,在我执行的terminal:

 pod install 

并开始编码。

一切似乎很好,直到我在一个单一的视图项目中使用MyFramework.framework产品。 当我尝试运行该项目时,出现以下问题:

 dyld: Library not loaded: @rpath/Alamofire.framework/Alamofire Referenced from: /Users/me/Library/Developer/CoreSimulator/Devices/87DA70B6-49BF-441E-BD81-F4A80B0792CF/data/Containers/Bundle/Application/2E414EA8-7E54-4D71-9295-566D4FAAADE2/test.app/Frameworks/MyFramework.framework/MyFramework Reason: image not found 

我认为,cocoa触摸框架项目本质上是dynamic的,因此将包括所有的依赖关系。

谁能告诉我为什么会发生这种情况,我怎么能解决这个问题? 这是CocoaPods的问题还是我错过了什么?

我是堆栈溢出的小菜,所以请让我知道,如果你需要更多的信息从我。

谢谢!

不幸的是,CocoaPods不支持与Cocoa Touch Framework目标一起使用。 我在发现GitHub上的问题时发现了一些引用:

我们并不真正支持将Pod整合到框架目标中
– 2015年11月4日的neonichu

…为了这个“正常工作”,CP需要对Xcode项目中的依赖关系进行recursion分析,并以某种方式确保您不会在另一个上下文中使用构build产品。
– 2015年7月7日的neonichu

到目前为止,我已经find了两种方法来处理这个问题:

正确的方法是为您的框架创build一个新的pod规范,并通过CocoaPods将其引入到您的主项目中。 这解决了CococaPods与依赖图的所有问题,并且是CocoaPods开发人员推荐的解决scheme。

简单的方法是在您的主项目中包含框架中的窗格。 这似乎工作,但坦率地说,我不知道为什么。 这是我的testing项目的Podfile:

 platform :ios, '9.0' use_frameworks! def myfirstframework_pods pod 'Alamofire', '~> 3.0' end target 'MyApp' do pod 'SwiftKeychainWrapper', '~>1.0' myfirstframework_pods end target 'MyFirstFramework' do myfirstframework_pods end 

只需将Alamofire.framework添加到应用程序目标的“常规”选项卡中的“embedded式二进制文件”部分即可。