如何制作依赖于其他可可足类的可可足类

2018年7月24日

因此,如果您已打开本文,则可能要尝试为使用其他Cocoapods的Cocoapods创建一个库。 原则上看似简单,但实际上没有官方方法可以做到。 实际上,只有通过分散的StackOverflow帖子和Github问题,我才能弄清楚。

好了,不再! 本教程旨在成为有关如何创建使用其他Cocoapods的Cocoapods的综合教程(多达您想要的!)

旁注 :如果您只想看工作代码,可以在我的Github上找到最终产品

所以首先,您显然需要安装cocoapods。 打开终端(您将经常使用它)并在下面的命令中输入。

sudo gem install cocoapods 

注意:如果出现此错误:

 ERROR: While executing gem ... (Gem::FilePermissionError) You don't have write permissions for the /usr/bin directory. 

尝试以下方法:

 sudo gem install cocoapods -n /usr/local/bin 

如果以上命令永远存在,请使用--verbose标志运行它。 这样一来,您可以看到它挂了什么。

 sudo gem install cocoapods -n /usr/local/bin --verbose 

另请注意:根据您计算机的处理器/功能,以下所有命令似乎永远都用不完 。 这就是为什么我建议在每个命令中添加--verbose标志的原因。 (个人而言,我使用的是2011 Mac Mini,每个命令至少需要半分钟。是的,慢速折磨☹️)

无论如何,现在我们已经安装了Cocoapods,是时候创建pod了。 我们将使用名为pod lib create的命令来设置库的文件结构。 运行此命令还可以配置许多选项。 下面的命令输出将告诉您选择什么。

 > pod lib create MyPodName 

Cloning `https://github.com/CocoaPods/pod-template.git` into `MyPodName `.
Configuring MyPodName template.

------------------------------

To get you started we need to ask a few questions, this should only take a minute.

If this is your first time we recommend running through with the guide:
- https://guides.cocoapods.org/making/using-pod-lib-create.html
( hold cmd and click links to open in a browser. )


What platform do you want to use?? [ iOS / macOS ]
> iOS

What language do you want to use?? [ Swift / ObjC ]
> Swift

Would you like to include a demo application with your library? [ Yes / No ]
> Yes

Which testing frameworks will you use? [ Quick / None ]
> None

Would you like to do view based testing? [ Yes / No ]
> No

我不会在本教程中介绍基于测试/基于视图的测试,但这不应阻止您自己进行研究。 如果有足够的兴趣,我还将提供一个涵盖该内容的教程!

现在,您的项目已创建,请打开Example/MyPodName.xcworkspace (它应该已经打开了,但是如果没有打开,请立即打开它)

首先,您需要编辑MyPod.podspec文件。 该文件包含创建pod所需的信息,因此非常重要。

准备发布文件后,您可以返回并正确填写此文件,但现在,请确保进行了这些关键更改。

  1. 编写适当的摘要和说明。 除非这样做,否则Cocoapods不会给您的豆荚带来好处。
  2. 添加一个名为s.swift_version的属性并将其设置为与swift的当前版本相同(截至2018年7月,即4.0
  3. 通过编写s.platform = :ios, "10.0"设置平台,其中10.0是您将支持的版本。 确保此处包含的任何版本都与Xcode中的MyPodName项目文件(以及测试项目+ Pods)中的版本相同。

之后,构建项目-您可能需要添加开发人员ID来签署该项目。 (您会看到我要求您经常进行构建。它并不总是与我们刚刚完成的工作有关,而是解决可能弹出的任何错误。我发现进行构建通常可以帮助Xcode更好地弄清楚自己)

然后,在Pods/Development Pods/MyPodName找到名为ReplaceMe.swift的文件,并将其重命名为MyPodName.swift (这是您要在其中放入代码的文件)

如果您不会有任何依赖关系,那么您就完成了! 但是,既然如此,请继续前进! (我们需要设置Xcode以将所有内容正确集成在一起)

使RemoveMe.swift看起来像这样(基本上只是添加带有init函数和方法的公共类)

(不用担心,您可以稍后进行编辑。这仅用于设置)

 import Foundation 

public class MyPodName {
var pointlessProperty: Any

public init(pointlessParam: Any) {
self.pointlessProperty = pointlessParam
}

public func temp() {
print("this prints to the console so we can see if this is working!")
}
}

注意:有时上述代码会失败,说明您无法构造MyPodName 。 我发现,只需删除并重新键入代码即可使其工作。 如果仍然有问题,请在下面发表评论!现在,在模拟器中构建并运行项目。 您应该不会在屏幕上看到任何内容,而只会看到一条控制台消息,其中指出您在temp函数中输入的内容。

之后,构建项目。

现在,我们将向示例项目中添加一些代码,以确保我们的pod可以正常工作。 在MyPodName/Example for MyPodName/ViewController.swift ,创建一个使用MyPodName的对象。

ViewController.swift

 import UIKit 
import MyPodName

class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let obj = MyPodName(pointlessParam: "doesn't really matter")
obj.temp()
}
}

现在,该项目已正确设置并分解,现在该添加我们的pod了。

要添加我们的依赖吊舱,我们需要将它们添加到两个文件中。 必须在两个地方编写完全相同的版本。 如果不这样做,您可能会中断您的项目。

在此示例中,我将使用Alamofire和SwiftyJSON,但可以随意使用任何所需的Cocoapod。

首先,在MyPodName.podspecMyPodName/Podspec MetadataPods/Development Pods/MyPodName/Pod

 s.dependency = 'Alamofire', '~> 4.7' 
s.dependency = 'SwiftyJSON', '~> 4.0'

其次,在PodfilePods/Podfile )中

 use_frameworks! 

target 'MyPodName_Example' do
pod 'SwiftyJSON', '~> 4.0'
pod 'Alamofire', '~> 4.7'
pod 'MyPodName', :path => '../'

target 'MyPodName_Tests' do
inherit! :search_paths
end
end

现在,关闭您的Xcode项目并返回到终端。 导航到您的Example目录( MyPodName/Example ),然后运行pod install --verbose (如果需要,则使用--verbose ,这只是我的个人喜好)

 cd Example/ 
pod install --verbose

现在,我们快完成了! 重新打开您的项目( open Example/MyPodName.xcworkspace )并构建!

现在,我们应该能够将依赖项导入MyPodName.swift

恭喜你! 您现在可以编写一个依赖于其他库的库!

如果您想比较最终产品,请看一下最终产品

本教程的灵感源于本教程,以创建常规的Cocoapod和这些StackOverflow帖子。 (是的,它们都是单独的链接)。

在Zesty.io上,我学习了如何创建这些类型的Pod。

上一篇:Zesty的生活