使用最新版本的CocoaPods(0.36),我可以将用Swift编写的CocoaPods(例如Alamofire)嵌入到我的Swift项目中。 现在,我将自己的自定义框架引入了项目中,它也想依赖于Alamofire。
为了实现这一点,我选择将pods框架作为依赖项添加到自己的框架中:
选择自己嵌入的Swift框架(Swift模块)的目标,在“常规”选项卡中的“链接的框架和库”中将“Pods.framework”添加为“必需品”。
然而,仅此还不足以编译代码,因为在我的Swift框架类中,无法“导入Alamofire”,因为它没有被识别为“可用框架”。
将Pods.debug.xcconfig和Pods.release.xcconfig文件添加到自己的Swift框架目标的配置中,换句话说,更改构建设置来进行所有更改,即CocoaPods对iOS应用程序目标的构建设置所做的所有更改,可以解决问题。
现在可以顺利进行构建。它在模拟器上也可以正常运行,我的嵌入式Swift框架成功地使用了CocoaPods添加的框架。
然而,如果我在设备上运行同样的代码,则会编译和安装顺利完成,但随后在启动时崩溃并出现致命错误:
dyld: Library not loaded: @rpath/Pods.framework/Pods
Referenced from: /private/var/mobile/Containers/Bundle/Application/32D2F1F8-679F-4A5F-8159-28F1C800D0C6/TestingFrameworks.app/Frameworks/mySwiftFramework.framework/mySwiftFramework
Reason: image not found
显然,并非所有可可荚xcconfig文件中的设置都适合添加到我的自定义Swift框架的构建设置中。
但是为什么模拟器可以工作呢?更重要的是,我需要纠正哪个构建设置?
在我看来,我需要更改这个构建设置:
PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods
转成其他东西...