阐述
随着iOS的不断发展,越来越多的开发者开始使用CocoaPods来管理他们的第三方。使用Pods时,我在考虑Pods能不能给自己更大的帮助,改变现在的开发风格。
制作
为了表示对CocoaPods的尊重,首先附上CocoaPods Github官方链接: https://github.com/CocoaPods 。
下方将介绍Pods制作步骤(文中多处操作使用Git命令,用户可使用SourceTree来操作)
一、在Github中创建一个仓库(Repository)
相信大家都有Github账号,此处忽略关于Github账号申请细节。
上方各部分含义:
1、Repository name
代码仓库名称,也可以说是Pod的名字
2、Description
代码仓库的描述信息
3、仓库的公开性
随个人能力选择,Public免费,Private收费
4、是否创建一个默认的README文件
完整的代码仓库,都需要README
5、是否添加.gitignore文件
.gitignore文件里面记录了若干文件类型,凡是该文件包含的文件类型,git都不会将其纳入到版本管理中,是否选择看个人需要。
6、license类型
正规的仓库都应该有一个license文件,Pods依赖库对这个文件的要求更严,是必须要有的。因此最好在这里让github创建一个,也可以自己后续再创建。我使用的license类型是MIT
二、Clone 这个仓库到本地目录(可使用SourceTree等其它svn工具)
Terminal 命令
$ git clone 仓库地址
三、本地创建 .podspec 文件 (spec 规范)
1、简述 .podspec 文件
该文件为Pods依赖库的描述文件,每个Pods依赖库必须有且仅有一个描述文件,名称需与创建的依赖库名称保持一致。
2、.podspec 文件相关
a 示例内容
Pod::Spec.new do |s|
s.name = "MethodFactory"
s.version = "0.0.1"
s.summary = "MethodFactory is a Good Factory of Method."
s.description = <<-DESC
MethodFactory is a Good Factory of Method ,it has too much nice method.
DESC
s.homepage = "https://github.com/yanglei3kyou/MethodFactory"
# s.screenshots = "www.example.com/screenshots_1.gif", "www.example.com/screenshots_2.gif"
s.license = "MIT"
# s.license = { :type => "MIT", :file => "FILE_LICENSE" }
# Or just: s.author = "yanglei3kyou"
# s.social_media_url = "http://twitter.com/yanglei3kyou"
s.platform = :ios
s.source = { :git => "https://github.com/yanglei3kyou/MethodFactory.git", :tag => "0.0.1" }
s.source_files = “MethodFactory/**/*.{h,m}"
# s.public_header_files = "Classes/**/*.h"
s.resources = "MethodFactory/*.png"
# s.preserve_paths = "FilesToSave", "MoreFilesToSave"
s.frameworks = "Foundation", "UIKit"
s.requires_arc = true
end
b 参数解释
s.license
Pods依赖库使用的license类型
s.source_files
表示源文件的路径,注意这个路径是相对podspec文件而言的。
s.frameworks
需要用到的frameworks,不需要加.frameworks后缀。
3、创建.podspec文件 (在 Git仓库根目录)
a 创建文件,填写内容(上方示例内容),根据内容进行修改
b Terminal命令 $ pod spec create Method
四、关于LICENSE文件
CocoaPods 要求所有的Pods依赖库都必须包含license文件,否则在发布CocoaPods官方时不予通过验证。
license的类型有很多种,详情可以参考网站https://tldrlegal.com。在创建github仓库的时候,已经选择了MIT类型的license。
五、关于主类文件
创建Pods依赖库就是为了方便别人使用我们的成果,比如我想共享给大家的MethodFactory类,提供给广大用户使用,这个类自然是必不可少的。我把这个类包含的两个文件放到一个名称为MethodFactory的文件夹中,对应的目录结构如图:
六、关于Demo工程
为了快速地教会别人使用我们的Pods依赖库,通常需要提供一个Demo工程。我创建的Demo工程放到了一个名为MethodFactoryDemo的文件夹中,该目录包含的文件如下图所示:
七、关于README.md
使用github的人应该都熟悉这个文件,它是一个成功github仓库必不可少的一部分,使用的是markdown标记语言,用于对仓库的详细说明。
添加完上方文件后,Github本地仓库目录就如下图所示
八、将本地仓库提交到 Github 中
1、pod 验证
$ set the new version to 1.0.0
$ set the new tag to 1.0.0
$ pod lib lint
注意: pod 验证过程中,出现任何warning 或者 error信息,验证都会失败,请按照提示信息,进行修改
2、上传到 Github 中
$ git add -A && git commit -m “Release 1.0.0."
$ git tag ‘1.0.0'
$ git push --tags
$ git push origin master
九、不发布此Pods,直接使用Pods
如果没有计划在CocoaPods中发布此Pods,可直接在项目的Podfile文件中添加该 Pods并使用。
pod ‘MethodFactory’, :git => 'https://github.com/yanglei3kyou/MethodFactory.git'
十、上传pod spec文件到 CocoaPods官方仓库中
如果计划Pods依赖库在CocoaPods使用,需要将 podspec文件上传到CocoaPods官方的specs仓库中,链接为https://github.com/CocoaPods/Specs 。
根据git的规则,要想向别人的仓库中添加文件,必须先fork一份别人的仓库,做完相应地修改后,在push给仓库的原作者,等到作者审核通过,然后合并到原来的仓库中。
1、fork一份CocoaPods官方的Specs仓库
进入到刚才的官方仓库链接中,点击屏幕右上角的fork按钮,如下图:
然后大家会发现自己名下会多一份仓库的分支。比如我的分支为:
2、将fork的仓库clone到本地
$ git clone https://github.com/yanglei3kyou/Specs.git
重要的事情说三遍: 将对应仓库地址换成自己的,将对应仓库地址换成自己的,将对应仓库地址换成自己的
3、将自己的podspec文件添加到本地Specs仓库中
Specs仓库clone到本地后,会放到一个名为Specs的文件夹中。podspec文件在Specs仓库中的保存原则是:
Pods依赖库同名文件夹 —> 版本号同名文件夹 —> podspec文件
照此原则,需要在Specs文件夹下建立一个名为MethodFactory的文件夹,然后进入到MethodFactory文件夹下,建立一个名称为1.0.0的文件夹,最后进入到1.0.0这个文件夹下,并且将之前创建好的MethodFactory.podspec文件拷贝进来。
不难理解,如果以后有对MethodFactory类的升级,就在MethodFactory文件夹下建立对应版本名称的文件夹,用于保存对应版本的podspec文件即可。
4、上传本地Specs仓库中的修改到github仓库
$ git add -A && git commit -m “Add MethodFactory pod spec file"
$ git push origin master
执行以上命令,成功后就能在github上自己fork的Specs仓库中看到刚上传的文件。
5、将在自己fork的Specs上做的修改pull给CocoaPods官方的Specs仓库
进入到自己fork的Specs仓库中,会看到屏幕左上角有一个绿色按钮:New pull request。点击后会进入另外一个页面,点击绿色Create Pull Request按钮,即可将我们fork的Specs上做的修改pull给CocoaPods官方的Specs仓库。
到这一步后,剩下的工作就只有等了,等待CocoaPods的维护人员审核并将我们pull上去的修改合并到官方的Specs仓库中,这个过程通常会有一天左右的等待时间。如果有任何消息,比如审核不通过,或者审核通过了,CocoaPods官方都会发邮件通知的。到审核通过的时候,我们就能在官方的Specs仓库中看到自己上传的文件夹。
6、查看审核进度
审核进度链接:https://github.com/CocoaPods/Specs/pulls,这里能看到所有的Specs仓库pull请求
十一、查看我们自己创建的Pods依赖库
先使用 $ Pod setup 更新本地Pods依赖库Tree。然后在使用 $ pod search MethodFactory 命令搜索。