Save&Load

Save The World, Load The Game

0%

制作一个CocoaPod

最近在码iOS代码的时候发现有一些常用的功能需要经常引用,但是每次都把这个代码贴一遍有点低效率。所以想到可不可以把这些常用的功能做成一个pod,然后工程里面直接pod依赖一下就好了,岂不妙哉~

1. 在GitHub上创建一个工程

1.1 创建repository

现在公用的pod repo是维护在GitHub上的,所以最方便的方法就是把工程放到GitHub上面。首先要在GitHub上创建一个工程,如下图:

-w348

填写一些基本信息:

其中license的选择可以参考这篇文章:如何选择开源许可证?

####1.2 clone到本地
创建好之后就可以把项目clone到本地了,

-w340

1
git clone https://github.com/santosli/SLCocoaPodExpamle.git

2. 创建本地Xcode工程

2.1 创建Cocoa Touch Framework工程

现在就要在本地创建一个工程了,打开Xcode,选择File -> New -> Project,然后选择类型为Cocoa Touch Framework。

【注意:这里保存工程的时候路径要选择之前clone到本地的目录】

2.2 编写代码

然后就可以在这个工程里面把需要使用的代码放进来了。

-w270

3. 上传工程并配置podspec

3.1 打tag并同步到GitHub

工程开发完成之后就可以把工程同步到GitHub上,同时要打一个tag版本号后面会用到。

1
2
3
git add .
git tag 0.0.1
git push -u origin master --tags

如果一切正常,就可以在GitHub上看到最新提交的变更。

3.2 创建并配置podspec

下面就可以创建podspec了,这个文件相是Pod的一个配置文件。

1
pod spec create SLCocoaPodExpamle

然后我们就会在目录下看到一个SLCocoaPodExpamle.podspec文件了,用编辑器打开进行编辑:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Pod::Spec.new do |s|

# 创建的Pod的名字
s.name = "SLCocoaPodExpamle"

# 版本号,和之前的tag保持一致
s.version = "0.0.1"

# 简单描述
s.summary = "a example for making cocoaPod"

# 具体描述,这个要多写点而且不能和summary重复
s.description = <<-DESC
a example for making cocoaPod, hope it helps.
DESC

# 主页,一般填GitHub地址即可
s.homepage = "https://github.com/santosli/SLCocoaPodExpamle"

# license和GitHub上的保持一致
s.license = "Apache License, Version 2.0"

# 作者信息
s.author = { "santos" => "hslx111@gmail.com" }

# 最低支持的版本
s.platform = :ios, "7.0"

# 代码库Git地址
s.source = { :git => "https://github.com/santosli/SLCocoaPodExpamle.git", :tag => "0.0.1" }

# 需要导入的资源,对应本地的工程地址
s.source_files = "SLCocoaPodExpamle/**/*.{h,m}"
s.exclude_files = "SLCocoaPodExpamle/Exclude"

3.3 验证配置

配置编写好之后,需要验证一下配置的合法性。使用命令:

1
pod spec lint ./SLCocoaPodExpamle.podspec --verbose

如果有问题,会比较详细的问题描述,根据描述修改即可。如果没有问题就可以进行下一步了。

3.4 上传Pod到仓库

为了让自己和别人都能使用这个Pod,需要把这个Pod上传到Pod的仓库中。

1
pod trunk push SLCocoaPodExpamle.podspec

到这里基本就已经完成了。

4. 验证

最后使用pod search来验证一下:

如果能搜索到,说明已经能够正常使用了。OK,可以继续愉快地码代码了。。。