CocoaPod库制作流程(一)

272 阅读4分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动

本文同时参与「掘力星计划」,赢取创作大礼包,挑战创作激励金

通过问题看本质!!!

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;