自定义 CocoaPod 框架和其他 Cocoapods

Posted

技术标签:

【中文标题】自定义 CocoaPod 框架和其他 Cocoapods【英文标题】:Custom CocoaPod Framework with Other Cocoapods 【发布时间】:2018-01-20 21:47:20 【问题描述】:

关于它的东西写了很多,但我仍然无法弄清楚。

所以我在做什么: 我已经创建了一个 Cocoapod 测试框架,其中的代码是从这里和那里的一些教程中借来的。 Repo

Podfile

platform :ios, '9.0'

target 'CocoaPodTestFramework' do

use_frameworks!

pod 'Alamofire'
pod 'SwiftyJSON'
end

在框架中,我需要一个 http 调用,因此我在我的框架工作区中使用了 Alamofire 和 SwitfyJSON pod。成功构建过程后,我得到三个框架文件:

    CocoaPodTestFramework.framework Alamofire.framework SwiftyJSON.framework

现在当我想使用它一个应用程序并创建一些测试应用程序来测试我的框架时。

    Swift:应用程序没有使用 cocoapod(普通 Xcode 项目不是工作区),我只是链接了所有 3 个框架,它就可以工作了。 对于 Objective-C 应用程序,我做了同样的事情,并且成功了。 现在在另一个使用 Cocoapods 的 Swift 应用程序中,我在 Podfile 中添加了以下内容

示例应用的 Podfile

platform :ios, '9.0'
target 'Cocoapod Test App' do
use_frameworks!
pod 'CocoaPodTestFramework', :path => '/Users/ABCD/Documents/Projects/TEST/CocoaPodTestFramework'
end

现在问题来了,每当我尝试构建我得到的应用程序时 no such module 'Alamofire' 在引用框架和应用程序中显示no such module 'CocoaPodTestFramework'

从那时起一直在阅读各种帖子/论坛/问题,但无法弄清楚如何修复它尝试在应用程序 Podfile 中添加pod 'Alamofire'pod 'SwiftyJSON',但仍然遇到相同的错误。 并且还尝试在框架的 .podspec (s.frameworks) 文件中添加“Alamofire”和“SwiftyJSON”,但这会产生错误。

所以我想知道是否有解决方法或者根本不可能?

在某处阅读以使用框架项目作为示例应用程序的子模块,这会解决问题吗?如果是,那么如果我不想共享代码,那么其他人怎么能使用这个 pod 我的意思是不提交代码只共享.framework 文件(基本上它应该像一个 SDK,我无法共享它的源但需要使用其他 pod :P,即使我也想跳过 github 部分寻找一种方法)

谁能帮我解决这个问题?

【问题讨论】:

【参考方案1】:

好的... 在这里,我如何弄清楚它可能会对像我这样的人有所帮助...

Podfile

s.dependency "Alamofire"
s.dependency "SwiftyJSON"

以上两行已经解决了这个问题,我仍然不想关闭这个线程,直到我开发了实际的 SDK 来检查它是否真的可以工作。 :)

【讨论】:

【参考方案2】:

我之前遇到过这个问题,我创建了一个动态框架,它使用 pod 来完成它作为聊天模块的过程,在将它拖到一个项目后它看不到子框架并给出你描述的相同错误,最后我发现只有 IOS 的 MACOS 不允许嵌套框架,似乎框架代码必须是没有子框架的纯代码才能工作,在 Apple 论坛上写了一个帖子,他们这样回应

【讨论】:

以上是关于自定义 CocoaPod 框架和其他 Cocoapods的主要内容,如果未能解决你的问题,请参考以下文章

在自定义 cocoapod 框架中使用 Pod 依赖项获得“使用未声明的类型”

自定义 cocoapod 找不到 swift 文件

在 Cocoapod 中导入 Kotlin/Native 框架

构建 TensorFlowLite Swift 自定义框架

如何在我自己的 Cocoa Pod 框架中添加 Google Map Cocoa Pod

Swift 框架的 CocoaPod 和单元测试