小知识,大挑战!本文正在参与“程序员必备小知识”创作活动
本文同时参与「掘力星计划」,赢取创作大礼包,挑战创作激励金
通过问题看本质!!!
CocoaPod库制作流程
1.安装cocoapods
这个步骤参考网上的安装教程,很多,很详细了。
2.注册trunk(cocoaPod公开库发布需要)
注册cocoapods的trunk,在终端运行一下指令:
pod trunk register xxx@xxx.com '注册的名字' --verbose
或者
pod trunk register xxx@xxx.com 注册的名字 --verbose
注册成功之后你会看到如下确认邮件的提示:
[!] Please verify the session by clicking the link in the verification email that has been sent to xxx@xxx.com
3.创建远程pod仓库
在自己的远程Git上创建pod仓库,本文以CLTSpecs为例,在公司的私有Git仓库中创建CLTSpecs仓库。具体操作略过。(公开库不需要)
4.添加关联本地pod仓库
在终端直接执行或进入~/.cocoapods/repos目录执行以下语句:
pod repo add CLTSpecs http://repo.we.com/clt.zhang/cltspecs.git
会把github上的CLTSpecs仓库克隆到本地,在repos下会生成一个CLTSpecs仓库,这个跟cocoapods的master仓库是类似的。
5.创建远程项目仓库
在自己的远程Git上创建工程项目仓库,本文以CLTFoundation为例,在公司的私有Git仓库中创建CLTFoundation工程仓库。具体操作略过。
6.创建本地pod项目,关联远程项目仓库
cd到期望存放本地工程的目录,执行以下语句:
pod lib create CLTFoundation
根据提示做相应选择如下所示:
What platform do you want to use?? [ iOS / macOS ]
> iOS
What language do you want to use?? [ Swift / ObjC ]
> ObjC
Would you like to include a demo application with your library? [ Yes / No ]
> Yes
Which testing frameworks will you use? [ Specta / Kiwi / None ]
> NOne
Would you like to do view based testing? [ Yes / No ]
> NO
What is your class prefix?
> CLT
会在你指定的目录下,根据cocoapods的pods模板生成一个pods工程,包含pods以及example的demo工程。
7.编辑pod项目,修改.podspec文件
编辑pod工程项目,在pod目录下的classes文件加下将replaceMe.md删除,添加自己要封装的类,可以有很多。本问以CLTRootObject.h、CLTRootObject.m为例。 编辑.podspec文件,本文如下:
Pod::Spec.new do |s|
s.name = 'CLTFoundation' #pod库名称
s.version = '0.1.0' #pod库版本号
s.summary = 'CLTFoundation.' #简单介绍,不超过140字
s.description = <<-DESC #详细描述
这是我的Foundation库.
DESC
#项目仓库首页
s.homepage = 'http://repo.we.com/clt.zhang/cltfoundation'
#协议,一般默认MIT
s.license = { :type => 'MIT', :file => 'LICENSE' }
#作者
s.author = { 'clt.zhang' => 'xx@qq.com' }
#项目Git路劲,可以指明标签,分支等
s.source = { :git => 'http://repo.we.com/clt.zhang/cltfoundation.git', :tag => s.version.to_s }
#在import时,引用的名字
s.module_name = 'CLTFoundation'
#系统版本
s.ios.deployment_target = '8.0'
#pod库需要包含的类和文件
s.source_files = 'CLTFoundation/Classes/*.{h,m}'
#添加第三方依赖,去掉注释即可依赖第三方
#s.dependency 'AFNetworking'
end
cd到Example目录下,执行pod install,就可得到以下工程结构:
-CLTFoundation
-Pod
|_Podfile
|_Development Pods
| |_CLTFoundation
| | |_ReplaceMe.md
| |_Pod
| |_Support Files
|_Frameworks
|....
8.检查.podspec文件
执行以下语句检查podspec文件:
pod lib lint
如有无关紧要的警告而未通过检查,则输入以下命令:--allow-warnings
9.Push提交本地pod项目到远程
提交本地pod项目工程到远程,在CLTFoundation下执行以下语句:
git add .
git commit –m”添加CLTFoundation类文件”
git push origin master
将本地工程推送到远程pod工程项目仓库
10.给pod项目打标签tag,并push到远程
执行以下语句,给项目打标签,注意标签要与pod版本一致:
git tag 0.1.0
git push --tags
推送成功后会显示:
Total 0 (delta 0), reused 0 (delta 0)
To http://repo.we.com/clt.zhang/cltfoundation.git
* [new tag] 1.0.1 -> 1.0.1
11.检查远程.podspec
执行以下语句对远程podspec检查(特别注意,必须要先push工程,再打标签,顺序错了会通不过验证):
pod spec lint
有警告的话加上 --allow-warnings,验证通过的话,就基本可以完成了。
12.将本地pod项目的.podspec上传自己的本地和远程仓库
我们自己的spec仓库里,而不是cocoapods的仓库,我这里是CLTSpecs仓库
公开库:
pod trunk push CLTFoundation.podspec
私有库:
pod repo push CLTSpecs CLTFoundation.podspec
有警告的话加上 --allow-warnings,cocoapods会把podspec文件上传到CLTSpecs仓库中。
13.制作完成,使用自己的pod库
现在我们可以通过pod search CLTFoundation 搜索我们的pod库 在podfile中指定自己的仓库路劲
source 'git@repo.we.com:clt.zhang/cltspecs.git‘ 私有仓库路径
pod 'CLTFoundation'
如果找不到,就执行以下pod repo update;