构建一个CocoaPods模块库的方法
我们平时开发iOS APP的时候,都喜欢用cocoaPods引入各种开源库,像AFNetworking、MJRefresh等著名的开源库,用Podfile一句话就可以引入项目,非常方便。那么,如何将自己开发的模块放到CocoaPods上供别人使用呢?下面就来介绍一下方法:
第一步:在Github上创建自己的模块库项目
首先,你要有个github的账号。进入github(https://github.com/),登录后点击右上角的“+”号,在弹出菜单中选“New repository”。
在弹出的页面中,依次输入“项目名”、“项目描述”,选中“Initialize this repository with a README”,.gitignore根据自己的开发语言来选就可以,比如我写这个项目用的是Objective-C,就从列表中选Objective-C。然后注意在“Add a license”那里选一种开源协议,一般选“MIT”就可以了。一定要选一个,否则github在初始化项目时不会创建一个名为"LICENSE"的文件,后面加入pods的时候会报错。
点击Create repository创建项目后,github会自动在项目中创建3个文件:.gitignore、README.md和LICENSE。点击旁边的“Code”按钮,可以看到这个git库的地址。使用git工具将它clone到本地(我喜欢用SourceTree,功能强大还免费)。
使用XCode创建一个Framework类型的工程,并保存到刚才clone到本地的项目目录中,Xcode会自动将工程的所有文件加入到git库。假设这个项目名为PeopleTestPod,我们在此项目中添加一个简单的Hello类,随便干一点事情。接下来,我们再用Xcode为PeopleTestPod添加一个名为“PeopleTestPodDemo”的Target,用来保存演示程序。(还记得你用过的那些别人开发的pods库吗?他们也是这么做的)
如果操作正确,现在Xcode中的代码结构应该大致是这个样子:
打开一个终端窗口,cd到项目的根目录,执行语句:
pod spec create 项目名 项目的github地址
例:
pod spec create PeopleTestPod https://github.com/ken-hanks/PeopleTestPod.git
此命令会自动创建一个扩展名为.podspec的配置文件。
现在让我们看一下磁盘上的目录结构,此时项目的目录下应该是这个样子的。
用vim打开PeopleTestPod.podspec文件,会看到很多的配置属性,我们只修改其中一部分就可以了。下面是需要修改的项目:
#项目名
spec.name = “PeopleTestPod"
#版本号,需要和github上的tag一致
spec.version = “0.0.5"
#项目说明,如果不写会有warning
spec.summary = "This is a test project of pod."
#项目官网地址,如果不写会有Warning
spec.homepage = "http://www.people.cn”
#共享协议类型,建议写MIT,不写的话无法通过
spec.license = “MIT"
#项目支持的操作系统以及最低版本号
spec.platform = :ios, “10.0”
#源码的github地址,tag那里直接用这个宏定义就好了,和前面那个version属性一致
spec.source = { :git => "https://github.com/ken-hanks/PeopleTestPod.git", :tag => "#{spec.version}” }
#source_files这个地方是最容易出错的,第一个引号里是项目名,第二个引号里是要包含到pod里的文件
#注意不要把那个Demo的Target包含到pod里。
#/**/表示递归包含,也就是把某个目录及其所有的子目录都包含进来。
#*.{h.m}表示包含所有扩展名是.h或.m的文件。
spec.source_files = "PeopleTestPod", "PeopleTestPod/PeopleTestPod/**/*.{h,m}”
编辑完.podspec文件后,用git add指令添加到git库。然后提交一版并推送到github。
例:
git add PeopleTestPod.podspec
git commit -m "添加podspec文件"
git push
给当前版本打一个tag,可以使用SourceTree这种工具。注意tag的号要和.podspec文件里的spec.version相同。
在终端下执行下面这个命令检测一下有效性。
pod lib lint
如果成功会显示:
PeopleTestPod.podspec passed validation.
如果不成功,则可以用pod lib lint --verbose 指令查看到底是哪里出了差错。
至此,构建一个CocoaPods模块库的第一个步骤就完成了。此时我们已经将模块的代码、Podspec文件上传到了github服务器,并按Podspec文件里的设定打好了Tag。此时我们打开github网站,应该能看到类似这样的界面:
第二步:将项目登记到CocoaPods.org
目前CocoaPods.org采用了一种名为“Trunk”的模式来实现这个操作,具体的操作步骤是:
进入项目目录,输入指令:
pod trunk register 邮箱 “项目名”
例: pod trunk register[email protected]“PeopleTestPod"
注册完后,到邮箱里收确认邮件,点击链接。
用pod trunk me 查看一下。如果显示下面这样的信息,就算成功了。
输入指令:pod trunk push 将模块信息注册到CocoaPods
如果成功,反馈大概是这个样子:
push成功后,会反馈一个网址,类似上图中的https://cocoapods.org/pods/PeopleTestPod,我们就可以打开这个地址看到此模块的属性信息。不过此时这个模块还无法在https://cocoapods.org/ 的主页上查到,需要等大约一天时间,才可以查到。
当模块可以在CocoaPods的主页上查到后,我们就可以在本地终端上用 pod search 项目名 的指令搜索这个库了。
例: pod search PeopleTestPod
如果显示类似下面这样的提示,就说明pod项目已经可以在repo库中查到。
如果查不到,则需要用 pod repo update 指令更新一下本地的repo。
当pod search返回正确结果后,就可以让你的用户在Podfile中使用你开发的模块库了。以后模块库更新版本,只要修改.podspec文件中的spec.version属性,将其改为新的tag号,然后再用 “pod trunk push” 指令更新cocoapods网站上的信息就可以了。