我正在使用XCode 8 + Swift 3。
我创建了一个名为" MyApp "的全新iOS项目。
然后,我创建了一个Cocoa touch 框架项目,名为" MySubProject"。 (我们的想法是让 MyApp 项目访问 MySubProject 代码。)
它们位于同一级文件夹中:
- MyApp/
- MySubProject/
我将 MySubProject 添加到 MyApp 项目中,并链接了 MySubProject 框架。一切正常。我的项目结构如下所示:
所有工作直到这里! (MyApp代码可以访问MyService代码)
现在,我需要 MySubProject 来使用Alamofire与后端进行通信。因此,在MySubProject/
下,我使用CocoaPod设置了Alamofire,它创建了MySubProject.xcworkspace
。
我想我需要删除之前的MySubProject.xcodeproj
并使用MySubProject.xcworkspace
,因此我删除了MySubProject.xcodeproj
&的引用将MySubProject.xcworkspace
添加到MyApp
,它看起来像这样:
如您所见,我现在看不到 MySubProject 的源代码。
在Framework子项目中通过CocoaPod使用Alamofire或任何第三方库的正确方法是什么?
===== UPDATE ======
我需要将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
如何解决?
答案 0 :(得分:1)
你可以通过三种不同的方式做到这一点。
1)将依赖项直接添加到MyApp项目
2)构建MySubProject并将具有依赖关系的库添加到MyApp项目中。 (假设MySubProject将是一个库)
3)使用自定义窗格时,您可以在.podspec文件中提供依赖关系。通过这种方法,我可以导入我自己的库(作为一个pods),这取决于其他Cocoapods。
编辑:经过仔细研究后,我们得出结论,上述方法不符合leem.fin的具体要求。将框架包含在另一个框架中是不可能的。但还有另外两个选择:
1)发送除框架之外的辅助框架并将其链接到您自己的框架。这样,MySubProject和MyApp都可以链接到该框架。
2)将源直接导入MySubProject,这样它们就可以使用MySubProject.framework进行编译,并且只有链接到MySubProject的其他目标才能访问它们。
最简单的方法是将源直接导入MySubProject。如果您不复制资源但链接到该文件夹,则可以在需要获取最新更改时git更新源。