当前位置: 首页 > 面试题库 >

创建Cocoa Touch框架时可以使用CocoaPods吗?

陈俊誉
2023-03-14
问题内容

我正在创建一个新的Cocoa
Touch框架(MyFramework.framework),该框架将依赖Alamofire。该框架将用Swift编写。作为测试,我开始了一个新的Cocoa
Touch Framework项目:

File > New > Project > Framework & Library > Cocoa Touch Framework

然后,在终端中,我执行了:

pod init

在此项目目录下。在新创建的Podfile中,我添加了以下内容:

source 'https://github.com/CocoaPods/Specs.git'
# Uncomment this line to define a global platform for your project
platform :ios, '8.0'
# Uncomment this line if you're using Swift
use_frameworks!

pod 'Alamofire', '~> 3.0'

再次,在终端中,我执行了:

pod install

并开始编码。

在我在单视图项目中使用MyFramework.framework产品之前,一切似乎都很好。当我尝试运行项目时,出现以下问题:

dyld: Library not loaded: @rpath/Alamofire.framework/Alamofire
Referenced from: /Users/me/Library/Developer/CoreSimulator/Devices/87DA70B6-49BF-441E-BD81-F4A80B0792CF/data/Containers/Bundle/Application/2E414EA8-7E54-4D71-9295-566D4FAAADE2/test.app/Frameworks/MyFramework.framework/MyFramework
Reason: image not found

我认为Cocoa Touch Framework项目本质上是动态的,因此将包括所有依赖项。

谁能告诉我为什么会这样,以及我如何能够解决它?这是CocoaPods的问题,还是我缺少什么?

我是Stack Overflow的菜鸟,所以如果您需要我提供更多信息,请告诉我。

谢谢!


问题答案:

不幸的是,CocoaPods不支持与Cocoa Touch Framework目标一起使用。在GitHub上探讨问题时,我找到了一些参考资料:

我们真的不支持集成荚到框架的目标…
-
neonichu于2015年11月4日

…为了使其“正常工作”,CP将需要对Xcode项目中的依赖项进行递归分析,并以某种方式确保您永远不会在其他上下文中使用构建产品。
-
neonichu于2015年7月7日

到目前为止,我已经找到了两种方法来解决此问题:

正确的方法
是为您的框架创建一个新的pod规范,并通过CocoaPods将其引入您的主项目中。这解决了CococaPods依赖图存在的所有问题,并且是CocoaPods开发人员推荐的解决方案

简单的方法 是将框架中的pod包含在主项目中。这似乎可行,但坦率地说,我不知道为什么。这是我的测试项目中的Podfile:

platform :ios, '9.0'
use_frameworks!

def myfirstframework_pods
    pod 'Alamofire', '~> 3.0'
end

target 'MyApp' do
    pod 'SwiftKeychainWrapper', '~>1.0'
    myfirstframework_pods
end

target 'MyFirstFramework' do
    myfirstframework_pods
end


 类似资料:
  • 我是实体框架的新手,我正在练习代码优先。我的问题是我正在创建一个模型类,我想要这个类从另外两个类继承。例如,员工有名字、中间名、姓氏等个人信息。它也有一个联系信息,如地址,电话,电子邮件等。学生也有这些属性。我把这些信息分成两类的原因是,另一个实体也可以有联系人信息,但没有个人信息,如公司、学校、医院、仓库等。 我想要做的是创建由Employee继承的接口(IPersonalInfo、IConta

  • 问题内容: 我有一个用Swift编写的应用程序(简称MyApp),其目标如下: :主要目标 :一个目标,用于为应用及其扩展程序(主要是API后端和数据库处理)之间共享的代码构建框架 :使用框架的Today View小部件(或现在称为的小部件)。 该框架链接到使用它的每个目标,即和。输入Cocoapods:我以前具有以下Podfile结构: 这里的目的是仅将框架公开给其他部分,而不是将其所有pod

  • 所以我在我的一个设备上安装了iOS10。现在我无法在设备上运行我的应用程序,得到‘找不到开发人员磁盘映像’错误。 所以我下载了最新的Xcode8-beta版。现在我的代码不能编译了--我首先要把它转换成最新的语法。因此,在修复所有非自动转换语法问题的同时,我导入的框架也出现了错误:“module file was created by an旧版本的编译器”,据我理解,这意味着这个框架需要用当前版本

  • 我一直在尝试使用cocoapods安装一个名为SabBar的pod,我成功地安装了cocoapod和初始设置。但出于某种原因,我在编译时遇到了这个错误: ld:警告:未找到选项“-F/Users/Andy/Library/Developer/Xcode/DerivedData/JymJam gocrzdctroqhlaedmghajkejcugm/Build/Products/Debug ipho

  • 背景:我的一个同事创建了一个3D可视化应用程序,作为一个用于android和windows桌面的libgdx项目。它可以被编译为使用RoboVM在iOS上运行。但是,我希望使用XCode在它周围包装额外的本机用户界面元素。我知道通过RoboVM以编程方式构建用户界面是可能的,但我很想研究一下是否有可能将现有的工作带入Xcode。我不需要编辑3D可视化组件,但添加额外的GUI元素周围的3D Vis窗

  • 问题内容: MyBatis是否有任何功能可以像Hibernate一样从类模型创建SQL模式? 我在Google中寻找该信息,但只找到有关MyBatis Generator的信息(http://mybatis.github.io/generator/)。这个工具对于从SQL模式生成Java模型似乎很有用,这与我想要的相反。 问题答案: MyBatis可以创建数据库架构吗? 恐怕不是。为此,您需要一个