前言
对于公开给所有人的开源库,我们称之为公有库;而针对部分人的开源库,比如公司内部的开源,我们称之为私有库。本章所讲解的是如何使公有库支持 Cocoapods,能在Cocoapods 上搜索并且使用。
概要
公有库 的制作大致分为以下几个步骤:
- 创建 Pod 的所需要的项目工程文件,并且有可访问的项目版本控制地址
- 创建 Pod 所对应的 podspec 文件
- 本地测试配置好 podspec 文件是否可用
- 向 Spec Repo 提交 podspec 文件
- 在项目中的 Podfile 中增加制作好的 Pod 并使用
- 更新维护 podspec
创建Pod项目工程文件
Cocoapods 为我们提供了快熟创建Pod项目工程的工具,先进入桌面cd Desktop/
1 | pod lib create PodDemo |
然后会出现
1 | Cloning `https://github.com/CocoaPods/pod-template.git` into `PodDemo`. |
接下来会出现几个问题:
1 |
|
输入完后,就开始建立工程,最后出现
1 | Pod installation complete! There are 2 dependencies from the Podfile and 2 total pods installed. |
查看新建的工程目录:
1 | . |
接下来就是将要开源的文件放入 PodDemo/Classes
中,PodDemo/Assets
中放入资源文件,然后进入Example
文件夹执行
1 | pod update |
此时再打开工程就能看到刚刚添加的文件已经在Pods工程下 Development Pods/PodDemo
中了,然后就可以编辑工程Demo了。
注:这里需要注意的是每次向Pod中添加了新的文件或者以后更新了podspec的版本都需要重新执行一遍pod update命令。
推送到远程仓库
首先到Github创建一个Public仓库
通过 Cocoapods 创建出来的目录本身就在本地的 Git 管理下,我们需要做的就是给它添加远端仓库,先到 PodDemo 目录下,先添加上面创建仓库的 SSH 地址,然后把代码推送到远程
1 | #提交到暂存区 |
推送完后我们可以看到Github上的远程仓库已经有了代码
因为 podspec 文件中获取Git版本控制的项目还需要tag号,所以我们要打上一个tag
1 | git tag -m "first release" 1.0.0 |
编辑Podsepc文件
在所有支持 Cocoapods 导入的库的开源目录下,都有一个 .Podsepc 的文件。无论是做公有库还是私有库,都必须配置这个文件。Podsepc 文件中记录了库的一些基本信息,包括版本号、获取的地址等等。
1 | Pod::Spec.new do |s| |
编辑完 podspec文件后,需要验证一下这个文件是否可用,如果有任何 WARNING 或者 ERROR 都是不可以的,它就不能被添加到 Spec Repo 中,不过 Xcode 的 WARNINGO 是可以存在的,验证需要执行命令
1 | pod lib lint |
如果看到
1 | -> PodDemo (1.0.0) |
说明验证通过了,不过只是这个 podspec 文件是合格的,不一定说明这个 Pod 是可用的,我们需要本地验证一下
本地测试podspec文件
本地创建一个新的项目,在这个项目的 Podfile 文件中直接指定刚才创建编辑好的 podspec 文件,测试能否使用。在 Podfile 文件中编辑
1 | platform :ios, '8.0' |
然后执行 pod install
命令安装依赖,打开项目工程,可以看到库文件都被加载到 Pods子项目中了。在项目中编写代码,测试库文件无误后就可以提交 podspec 到 Spec Repo中了
向Spec Repo提交podspec
注册trunk,查看是否注册过
1 | pod trunk me |
如果没有注册
1 | pod trunk register yanff.us@gmail.com "YAN" |
注册完后,提交到 Spec Repo
1 | pod trunk push PodDemo.podspec |
最后更新一下本地的 Spec Repo
1 | pod repo update |
然后输入搜索命令
1 | pod search PodDemo |
就可以搜索到刚刚提交的库了
1 | -> PodDemo (1.0.0) |
自此,我们也成为了开源主义的接班人,公有库的制作已经完毕了,其他人可以通过CocoaPods使用我们制作的库了
关于更新和维护
如果想要更新和维护版本,只需要在PodDemo/Classes
中进行源码的修改,然后在Podsepc文件中修改文件的路径以及版本号,需要注意的是,版本号一定要对应相应仓库的tag ,而且每次进行修改的时候,版本号不能低于原来的版本号,然后再向 Spec Repo 提交新的podspec