我正在创建一个新的应用程序MyApp
,在这里我决定将应用程序的某些部分放在单独的框架MyFramework
中,而不是将应用程序本身放到其他项目中以使其可重用。该框架有自己的项目(MyFramework.xcodeproj
),它是主应用程序项目(MyApp.xcodeproj
)的子项目。当然,主应用程序项目具有对框架(MyFramework.framework
)的依赖(链接和复制)。到目前为止,这部分工作正常。
现在,MyFramework
需要一个可可豆荚(Alamofire
)才能起作用。据我了解,我不想直接为MyFramework.xcodeproj
项目设置可可豆荚,所以我只是将其设置为主应用程序MyApp.xcodeproj
(由于豆荚而现在为MyApp.xcworkspace
),并且在那里也包含了Alamofire
豆荚。然后,我将MyFramework.xcodeproj
与Alamofire.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/