在子项目(框架项目)中使用第三方窗格
我正在使用XCode 8 + Swift 3。
我创build了一个名为“ MyApp ”的新的iOS项目。
然后,我创build一个名为“MySubProject”的Cocoa touch 框架项目。 (这个想法是让MyApp项目访问MySubProject代码。)
他们在同一级别的文件夹中:
- MyApp/ - MySubProject/
我将MySubProject添加到MyApp项目中,链接了MySubProject框架。 一切工作正常。 我的项目结构如下所示:
所有作品,直到这里! (MyApp代码可以访问MyService代码)
现在,我需要MySubProject使用Alamofire与后端进行通信。 所以,在MySubProject/
我设置Alamofire与CocoaPod,创buildMySubProject.xcworkspace
。
我想我需要删除以前的MySubProject.xcodeproj
并使用MySubProject.xcworkspace
,所以我删除了MySubProject.xcodeproj
的引用MySubProject.xcodeproj
添加到MyApp
,它看起来像这样:
正如你所看到的,我现在看不到MySubProject的源代码。
在Framework子项目中通过CocoaPod使用Alamofire或任何第三方库的正确方法是什么?
=====更新======我需要将Alamofire添加到MySubProject
,而不是MyApp
。 我按照Alamofire官方网站的指示手动添加Alamofire到MySubProject
,项目结构如下所示:
- MyApp - MySubProject.xcodeproj -Alamofire.xcodeproj
之后,我可以访问MySubProject中的Alamofire,没有编译错误。 但是,当我在模拟器中运行我的应用程序,我得到运行时错误:
Referenced from: /Users/myname/Library/Developer/Xcode/DerivedData/MyApp-hezjlyvzxnavccenabxdepgftbrg/Build/Products/Debug-iphonesimulator/Alamofire.framework/Alamofire Reason: image not found
如何解决?
你可以用三种不同的方法
1)直接添加依赖到你的MyApp项目
2)构buildMySubProject,并将依赖项的库添加到MyApp项目中。 (假设MySubProject将是一个库)
3)使用自定义窗格时,可以在.podspec文件中提供依赖项。 通过这种方法,我可以导入我自己的库(作为一个豆荚),这取决于其他Cocoapods。
编辑:经过一番好看,我们得出的结论是上述方法没有达到leem.fin的具体要求。 将框架包含到另一个框架中是不可能的。 但是还有两个select:
1)除了你的框架之外,还要发布第二个框架,并把它连接到你自己的框架。 这样,MySubProject和MyApp都可以链接到该框架。
2)将源代码直接导入到MySubProject中,这样就可以使用MySubProject.framework进行编译,并且可以通过链接到MySubProject的其他目标访问它们。
最简单的方法是将源直接导入MySubProject。 如果您不复制资源,但链接到该文件夹,则可以在需要获取最新更改时更新源代码。