如何将(子项目)框架与pod相关联?

时间:2017-01-24 23:03:57

标签: ios swift xcode frameworks cocoapods

我正在创建一个新的应用MyApp,我决定将应用的某些部分放在一个单独的框架MyFramework中,而不是应用本身,以使它们可以在其他项目中重复使用。框架有自己的项目(MyFramework.xcodeproj),它是主应用程序项目(MyApp.xcodeproj)的子项目。当然,主应用程序项目在框架(MyFramework.framework)上具有依赖关系(链接和复制)。到目前为止,这部分工作正常。

现在,MyFramework需要一个可可豆荚(Alamofire)才能运作。据我所知,我不想直接为MyFramework.xcodeproj项目设置可可豆荚,所以我只需为主要应用MyApp.xcodeproj设置它(现在MyApp.xcworkspace因为pods而且还包括Alamofire pod。然后,我将MyFramework.xcodeprojAlamofire.framework(而非MyApp_Pods.framework)相关联,但未将Alamofire设置为复制。 MyApp.xcodeproj执行通常的cocoapods链接/复制/捆绑内容,因此最终产品中还包含Alamofire.framework。这部分工作得很好。

(注意:我说' 部分正常'这里因为我偶尔会在编译时找不到MyFramework模块的Alamofire来源中出现错误,可以通过重新链接Alamofire.framework中的MyFramework.xcodeproj来修复。除此之外,构建和运行应用程序运行正常。)

现在问题是,当我尝试归档应用时,Alamofire来源中再次找不到MyFramework模块。归档MyApp(也构建MyFramework)以及直接归档MyFramework时,都会发生错误。错误不是发生在链接阶段,而是发生在具有import Alamofire语句的源Swift文件的编译阶段。

我怀疑类似于Alamofire.framework的链接以使用在构建时可以找到的错误的相对路径,但在归档等方面有所不同。我已经尝试将Alamofire.framework路径设置为Relative to build products,但无法使其正常工作,甚至不能用于常规构建(不归档)。

我现在陷入困境,想知道我的整个设置是否与MyFramework.xcodeproj项目链接到Alamofire.framework并且Alamofire包含在广告连接中是否正确。

有人能给我一个提示,这里可能有什么问题吗?在路径中还是在整个设置中?

1 个答案:

答案 0 :(得分:0)

这不会解决问题本身,但会提供满足您需求的解决方案:

MyFramework转换为广告连播。在private spec repo中托管它,或者 - 甚至更简单 - 使用pod文件中的git参数来访问它。

pod 'MyFramework', :git => 'https://gitsever/maxscompany/MyFramework.git'