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

现在,MyFramework需要一个可可豆荚(Alamofire)才能起作用。据我了解,我不想直接为MyFramework.xcodeproj项目设置可可豆荚,所以我只是将其设置为主应用程序MyApp.xcodeproj(由于豆荚而现在为MyApp.xcworkspace),并且在那里也包含了Alamofire豆荚。然后,我将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作为pod的整个设置是否正确。

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

最佳答案

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

MyFramework转换为Pod。将其托管在private spec repo中,或者甚至更简单地使用pod文件中的git参数进行访问。

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

关于ios - 如何将一个(子项目)框架链接到Pod?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41840553/

10-10 13:29