前言
作为一个iOS开发者,一定使用过CocoaPods吧。如果还不熟悉的小伙伴可以参考一下CocoaPods安装和使用教程。CocoaPods 作为OS X和iOS 开发平台的类库管理工具,已经非常完善和强大。通常我们用CocoaPods来管理第三方开源类库,但是我们也极有可能会开发一些常用工具或静态类库供他人使用。
近期由于公司对项目管理的规划,需要使用CocoaPods做三方库版本依赖管理,因此研究学习下了创建Pods依赖库。苦于网络查找的资料太多,有些并不适合自己这种小学生(大神们太基础的并未记录),所以有了本文。下面进入正片部分:
正文
1.创建自己的GitHub仓库
CocoaPods是托管在GitHub上的,所有的Pods也是托管在GitHub上,所以我们首先需要创建一个属于自己的GitHub仓库。
创建GitHub仓库有两种方式:
1.通过GitHub网站登录账号后创建仓库,如图:
2.通过GitHub的客户端“GitHub Desktop”来创建,如图:
关于创建仓库做一个简单说明:
(1)Initialize: 是否默认创建一个 README 文档,一个完整的库都会有这个说明文档,这里最好勾选一下。不过如果忘记的话也不要紧,后面手动创建也是可以的。
(2).gitignore: 忽略项文件,记录一些想忽略的文件类型,凡是该文件包含的文件类型, git 都不会将其纳入到版本管理中。看需要选择就行。
(3)license: 正规的仓库都有一个 license 文件, Pods 依赖库对这个文件要求比较严格,需要有这个文件。这里最好让 github 自动创建一个,不过后续手动创建也行。我们这次先使用 MIT 类型的 license。
上面各项根据大家需要填写完毕后,点击 Create repository 按钮即可,创建成功后如下所示:
2.Clone仓库到本地
为了方便向仓库中删减内容,需要将仓库 clone 到本地,这里有多种操作方式,可以选择你喜欢的一种。clone到本地后,目录结构如图(后续操作都在该目录下进行)
3.向本地仓库中添加创建 Pods 依赖库所需的文件
(1)主类文件
创建 Pods 依赖库就是为了方便别人使用我们的成果,比如我想共享给大家的HZWaitView类,那这个类自然必不可少,我们把这个类放入一个 HZWaitView 的目录中:
(2)Demo工程
为了快速教会别人使用我们的 Pods 依赖库,通常需要提供一个 demo 工程:
(3)README.md
使用 github 的人应该都熟悉这个文件,它是一个成功的 github 仓库必不可少的一部分,使用 markdown 对仓库进行详细说明。
(4)LICENSE 文件
CocoaPods 强制要求所有的 Pods 依赖库都必须有 license 文件,否则验证不会通过。
(5).podspec 文件
每个 Pods 依赖库必须有且仅有一个名称和依赖库名保持一致,后缀名为 .podspec 的描述文件。
创建这个文件有两种方法:
1.复制已有的 podspec 文件然后修改对应的参数。
2.执行命令行创建。
我们使用命令行创建,先cd到本地仓库目录,然后终端输入命令:pod spec create HZWaitView
创建成功后终端显示如下:
本地仓库目录结构如下:
文件都准备好后提交到GitHub,并打上tag~‘v0.0.1’(注意版本前面的’v‘要加上,不然后面有坑)
4.修改.podspec文件
创建出HZWaitView.podspec文件后(可以使用sublime或文本编辑打开),我们打开可以发现该文件为ruby文件。里面有很多内容,我们只需要根据需要做相应修改。
Pod::Spec.new do |s|
s.name = "HZWaitView" //名字,一般和podspec文件名保持一致
s.version = "0.0.1" //版本号 这个版本号需要和刚才提交GitHub的tag值一样,并且不用加上'v'
s.summary = "Wait view when waiting" //描述,这个随便自己怎么写
s.description = <<-DESC
This just a wait view when waiting //这个随便,可以不写
DESC
s.homepage = "https://github.com/PamelaChen1/HZWaitView" //项目主页,一般是GitHub的链接地址
s.license = "MIT"
s.author = { "yc" => "805507174@qq.com" }
s.platform = :ios, "7.0" //支持的平台和版本,这个一定要填
s.source = { :git => "https://github.com/PamelaChen1/HZWaitView.git", :tag => "v#{s.version}" }
s.source_files = "HZWaitView/**/*.{h,m}"//这里的路径自己填上去 按照层级写就行了
s.frameworks = "UIKit", "Foundation"
s.requires_arc = true //是否支持ARC
end
5.验证.podspec文件
编辑完podspec文件后需要验证一下这个文件是否可用podspec文件不允许有任何的Warning或者Error,执行命令:pod spec lint HZWaitView.podspec 验证通过如下:
如果验证未通过只存在warning不存在Error的情况,可使用命令:pod lib lint --allow-warning 再次验证。
6.提交.podspec文件
经过前面的步骤,我们的 CocoaPods 依赖库就已经准备好了,但是现在你还不能在你的工程中使用它。如果你想让它成为一个真正可用的依赖库,还需要最后一步操作:将刚才生产的 podspec 文件提交到 官方的 CocoaPods Specs 中。
没错,我们平时用的能用 pod search 搜到的依赖库都会把它上传到这个仓库中, 也就是说只有将我们的 podspec 文件上传到这里,才能成为一个真正的依赖库,别人才能用!
提交.podspec文件需要先注册一个cocoapods账号,可以使用命令:
pod trunk register xxxx@qq.com 'Pamela' --description='macbook air'
注册完成后可以使用命令:pod trunk me 来查看注册情况,如下图
账号注册完成后我们只需要使用命令:pod trunk push HZWaitView.podspec 提交该文件,下面只需要等待就可以了。经过漫长的等待,终于看到结果
大家看到这个是不是非常激动呢。
当我们尝试搜索依赖库时,发现
这时内心时崩溃的。遇到这个问题的解决方法就是Finder前往资源库(~/Library/Caches/CocoaPods)去删除缓存中的search_index.json,然后再pod search一次就可以了。最终结果
7.私有库的搭建
1.创建代码仓库并克隆到本地,本地文件目录结构如下图:
2.使用终端命令,上传代码到git仓库,命令如下:
cd ~/.HZBankWebContainer
git init
git add .
git commit -m "first commit"
git remote add origin XXXXXX (XXXXX为仓库地址)
git push -u origin master
3.创建podspec文件仓库并克隆到本地,本地spec文件目录如下图:
4.上传spec文件至git仓库,命令与代码上传一致
5.进入代码仓库,创建分支,终端命令如下:
git checkout -b 1.0.0 //检出brunch分支
git push origin 1.0.0 //推送分枝
6.完成以上操作后就可以使用cocoapods来管理类库了,如果使用私有库中有依赖于其他三方开源库的,需要连内网通过代理访问外网。命令如下:
git config --global http.proxy "http://192.68.70.62:3128" //设置代理服务器地址访问git
git config --global https.proxy "http://192.68.70.62:3128"
git config --global --get-all http.proxy //获取代理信息
git config --global --unset http.proxy
git config --global --unset https.proxy //重置代理