ios - 我可以在创建 Cocoa Touch Framework 时使用 CocoaPods 吗?

标签 ios swift cocoa cocoapods cocoa-touch

我正在创建一个新的 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

然后开始编码。

在我在单 View 项目中使用 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 上挖掘他们的问题时,我发现了一些对此的引用:

We don't really support integrating Pods into framework targets...
-neonichu on Nov 4, 2015

...in order for this to "just work", CP would need to do a recursive analysis of dependencies in your Xcode project and also somehow ensure that you would never use the build product in another context.
-neonichu on Jul 7, 2015


到目前为止,我找到了两种方法来处理这个问题:

正确的方法 是为您的框架创建一个新的 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

关于ios - 我可以在创建 Cocoa Touch Framework 时使用 CocoaPods 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35927109/

相关文章:

cocoa - 核心数据迁移一对多关系

objective-c - 为什么 `__NSArrayI` 不是一种 `[NSArray class]?

ios - 更新 Xcode10 中的 J2ObjC 库

ios - Xcode 7 堆栈 View 如何向后兼容 iOS 8 和 iOS 7?

ios - 从 HealthKit 获取设备

ios - 更新位置时出错操作无法完成。 (kCLErrorDomain 错误 0。)

cocoa - 如何共享 Safari 的 NSURLCache 存储?

ios - 尝试在 ChartDataEntry 中输入日期/字符串

arrays - Swift 位数组到字节数组(UInt8 数组)

ios - 在 iPhone X 中叠加时 UIView 的顶部位置不佳