在我的子项目(CocoaTouch 框架)中使用 3rd 方框架(Alamofire)
Posted
技术标签:
【中文标题】在我的子项目(CocoaTouch 框架)中使用 3rd 方框架(Alamofire)【英文标题】:Using 3rd party framework (Alamofire) in my sub-project (CocoaTouch framework) 【发布时间】:2017-07-25 15:10:58 【问题描述】:我正在使用 XCode 8 + Swift 3。
我创建了一个名为“MyApp”的全新 ios 项目。
然后,我创建了一个名为“MySubProject”的 Cocoa touch framework 项目。 (这个想法是让 MyApp 项目访问 MySubProject 代码。)
我将 MySubProject 添加到 MyApp 项目中,链接了 MySubProject 框架。
在 XCode 项目导航器中它看起来像这样:
MyApp
> MySubProject.xcodeproj
一切正常。 MyApp
中的代码可以访问MySubProject
中的代码。
现在,我需要将 Alamofire 添加到 MySubProject
。我按照 Alamofire offical website 中的说明手动将 Alamofire 添加到 MySubProject
,项目结构如下所示:
MyApp
> MySubProject.xcodeproj
> Alamofire.xcodeproj
所以,MySubProject
依赖于 Alamofire 框架。这是MySubProject
目标下的样子--> 一般:
之后,我可以在MySubProject
代码中访问Alamofire,没有编译错误。 MyApp 已成功构建。但是,当我在模拟器中运行我的应用程序时,我得到 run-time error:
dyld: Library not loaded: @rpath/libswiftSwiftOnoneSupport.dylib
Referenced from: /Users/myname/Library/Developer/Xcode/DerivedData/MyApp-hezjlyvzxnavccenabxdepgftbrg/Build/Products/Debug-iphonesimulator
/Alamofire.framework/Alamofire 原因:找不到图片
为什么?以及如何解决?
【问题讨论】:
您是否尝试过构建 Pods 方案? 【参考方案1】:我在这里安装 cocoapods 以使用 alamofire 时遇到了同样的问题。一个对我有用的解决方案是从 github 下载 Alamofire,然后我用 xcode 编译了 alamofire 的框架并在我的应用程序中使用它。当我把 alamofire 放在我的工作区时,我得到了一个错误,所以我不得不把 alamo xcode 项目也放在那里。这种方式对我有用。
【讨论】:
【参考方案2】:如果您想使用 alamofire,有更好的安装方法。您可以将 cocoapods 用于 intall 3rd 方框架。因此,您必须按照以下步骤操作:
1.- 请通过 gem 安装 cocoapods sudo gem install cocoapods
2.- 通过终端进入您的文件夹并输入pod init
,然后输入vim Podfile
3.- 您可以看到一个文件,您可以添加您的 3rd 方框架,因此您必须将 Alamofire 添加到您的目标并从您的 vim :wq
编写它。例如输入:
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
target 'YourTarget' do
use_frameworks!
pod 'Alamofire', '~>4.0'
4.- 现在您必须从终端输入pod install
,仅此而已。打开从 cocoapods 生成的 xcworkspace
并从 xCode 输入 cmd + B
。然后你可以将 Alamofire 导入你的类。
【讨论】:
我知道,但是这种安装方式不符合我的需要。请在这里查看我的问题***.com/questions/45281648/… Alfredo:他把我们介绍给彼此,所以我认为他只是把情况复杂化了,不知道他真正想要什么。 @Leon,我很清楚我想要什么,我只是不知道实现它的正确方法。我发布了两个问题,因为它们是同一个项目的两个不同问题。你没有真正理解我的问题并不意味着我不知道我想要什么。 我希望我的框架项目嵌入Alamofire,并且框架项目可以被我的应用项目使用Alamofire功能。在我的问题中,我展示了我尝试但没有工作的内容。就像我说的,我很清楚我想要什么。 @Leem.fin - 你有解决问题的方法吗?我也是同样的情况。我想在我的自定义框架中添加“Alamofire”并得到同样的错误。我正在使用通过 carthage 生成的 Alamofire.framework。如果我不添加它,它只适用于 Swift 类,但是一旦我添加 Alamofire.framwork 并生成我的自定义框架并在我的测试项目中使用它就会出现此错误。 如果您对此问题有解决方案,请回复。以上是关于在我的子项目(CocoaTouch 框架)中使用 3rd 方框架(Alamofire)的主要内容,如果未能解决你的问题,请参考以下文章
使用 Cocoa Touch Framework 的 iOS 8 项目未在模拟器中构建