iOS 让自己的工具支持CocoaPods

前言

作为一个iOS开发者,一定使用过CocoaPods吧。如果还不熟悉的小伙伴可以参考一下CocoaPods安装和使用教程CocoaPods 作为OS XiOS 开发平台的类库管理工具,已经非常完善和强大。通常我们用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   //重置代理

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342

推荐阅读更多精彩内容