在我的子项目(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 项目未在模拟器中构建

如何使用存储在 CocoaTouch 框架中的 Localizable.strings?

在多个应用程序中使用可可触摸框架项目

如何解决 Cocoa touch 框架中的符号名称冲突

Cocoa Touch 框架无法在嵌入项目中的模拟器上调试

在 Cocoa Touch 框架中包装静态库