一、创建自己的github仓库
CocoaPods都托管在github上(官方链接为:https://github.com/CocoaPods),所有的Pods依赖库也都依赖github,因此第一步我们需要创建一个属于自己的github仓库。
仓库创建界面如下图:
说明:
- Repository name 仓库名称,这里写成WZMarqueeView,必填的;
- Description 仓库的描述信息,可选的;
- 仓库的公开性 这里只能选Public,一个是因为Private是要money的,再一个Private别人看不到还共享个毛;
- 是否创建一个默认的README文件 一个完整地仓库,都需要README说明文档,建议选上。当然不嫌麻烦的话你也可以后面再手动创建一个;
- 是否添加.gitignore文件 .gitignore文件里面记录了若干中文件类型,凡是该文件包含的文件类型,git都不会将其纳入到版本管理中。是否选择看个人需要;
- license类型 正规的仓库都应该有一个license文件,Pods依赖库对这个文件的要求更严,是必须要有的。因此最好在这里让github创建一个,也可以自己后续再创建。我使用的license类型是MIT。
上面的各项都填写完毕后,点击Create repository按钮即可,创建成功地界面如图:
到这,仓库创建过程就结束了。
二、clone仓库到本地
为了便于向仓库中删减内容,需要先将仓库clone到本地,操作方式有多种,推荐使用命令行:
$ cd 本地的工程目录
$ git clone https://github.com/jeikerxiao/XXFramework.git
操作完成后,github上对应的文件都会拷贝到本地。
github上仓库中的.gitignore文件是以.开头的隐藏文件,因此这里只能看到两个。 后续我们的所有文件增、删、改都在这个目录下进行。
三、向本地git仓库中添加创建Pods依赖库所需文件
注意:以下描述的文件都要放在步骤二clone到本地的git仓库的根目录下面。
1、后缀为.podspec文件
该文件为Pods依赖库的描述文件,每个Pods依赖库必须有且仅有那么一个描述文件。文件名称要和我们想创建的依赖库名称保持一致,我的XXFraemwork依赖库对应的文件名为XXFraemwork.podspec。
XXFraemwork.podspec:
Pod::Spec.new do |s|
s.name = "XXFramework"
s.version = "1.0.0"
s.summary = "A marquee view used on iOS."
s.description = <<-DESC
It is a marquee view used on iOS, which implement by Objective-C.
DESC
s.homepage = "https://github.com/jeikerxiao/XXFramework"
# s.screenshots = "www.example.com/screenshots_1", "www.example.com/screenshots_2"
s.license = 'MIT'
s.author = { "jeikerxiao" => "jeiker@126.com" }
s.source = { :git => "https://github.com/jeikerxiao/XXFramework.git", :tag => s.version }
# s.social_media_url = 'https://twitter.com/NAME'
s.platform = :ios
# s.ios.deployment_target = '5.0'
# s.osx.deployment_target = '10.7'
s.requires_arc = true
#s.source_files = 'WZMarqueeView/*'
# s.resources = 'Assets'
# s.ios.exclude_files = 'Classes/osx'
# s.osx.exclude_files = 'Classes/ios'
# s.public_header_files = 'Classes/**/*.h'
s.vendored_frameworks = 'Framework.framework'
s.frameworks = 'Foundation'
end
文件说明:
该文件是ruby文件,里面的条目都很容易知道含义。
其中需要说明的又几个参数:
- s.license Pods依赖库使用的license类型,大家填上自己对应的选择即可。
- s.source_files 表示源文件的路径,注意这个路径是相对podspec文件而言的。
- s.frameworks 需要用到的frameworks,不需要加.frameworks后缀。
1.2 如何创建podspec文件 大家创建自己的podspec文件可以有两个途径:
- 复制我的podspec文件然后修改对应的参数,推荐使用这种方式。
- 执行以下创建命令:
$ pod spec create XXFramework
也会创建名为XXFramework.podspec的文件。但是打开创建完的文件你就会发现里面的东西太多了,很多都是我们不需要的。
2、LICENSE文件
CocoaPods强制要求所有的Pods依赖库都必须有license文件,否则验证不会通过。在创建github仓库的时候,我已经选择了MIT类型的license。
3、主类文件
这里我是添加的Framework.framework库文件(或编写的源代码,这里是我之前生成的静态库文件)
创建Pods依赖库就是为了方便别人使用我们的成果.
4、demo工程
为了快速地教会别人使用我们的Pods依赖库,通常需要提供一个demo工程。我这里没有添加,不过正常项目中强烈建议添加。
5、README.md
使用github的人应该都熟悉这个文件,它是一个成功github仓库必不可少的一部分,使用的是markdown标记语言,用于对仓库的详细说明。
以上所说的5个是创建Pods依赖库所需最基础的文件,其中1、2、3是必需的,4、5是可选但强烈推荐创建的。
我项目中最后的文件结构:
四、验证编写的podspec文件
使用命令来验证编写的podspec文件是否正确:
$ pod lib lint
$ pod spec lint XXFramework.podspec
如果一切正常,这条命令执行完后会出现下面的输出:
-> XXFramework (1.0.0)
XXFramework passed validation.
到此,pod验证就结束了。 需要说明的是,在执行pod验证命令的时候,打印出了任何warning或者error信息,验证都会失败!如果验证出现异常,打印的信息会很详细,大家可以根据对应提示做出修改。
五、提交修改文件到github
1. 提交代码到Github
接着 把修改好的文件push到github上去
$ git add XXFramework.podspec
$ git commit -am "add XXFramework.podspec file”
$ git push -u origin master
GitHub上最后看到的文件结构为:
2.为提交的代码打上tag
cd进入项目目录,进去后输入
$ git tag '1.0.0'
$ git push --tags
$ git push origin master
给项目加入一个tag。以便pod能自动识别,不然后面会有坑。
六、使用Trunk服务提交到Cocoapod官方在Github的specs
在你本地,前往~/.cocoapods/repos/master/Specs,你会看到cocoapod所有公有的开源库配置,这个通过cocoapod官方在github的specs来管理,地址为https://github.com/CocoaPods/Specs 。
说到这里,你会想把这个库fork分支下来,clone到你本地,把自己的Test.podspec加入,然后add、commit、 push,最后在github上pull request来和官方的主分支合并,可是你会发现请求马上被自动关闭。为什么呢?
虽然一开始使用GitHub Pull Requests来整理所有公共pods效果很好。但是,随着Pod数量的增加,这个工作对于spec维护人员Keith Smiley来说变得十分繁杂。甚至一些没有通过$ pod lint的spec也被提交上来,造成repo无法build。
CocoaPods 0.33中加入了Trunk服务。CocoaPods Trunk服务的引入,解决了很多类似的问题。CocoaPods作为一个集中式的服务,使得分析和统计平台数据变得十分方便。
下面来说说怎么发布CocoaPod。
1.注册Trunk服务
要想使用Trunk服务,首先你需要注册自己的电脑。这很简单,只要你指明你的邮箱地址(spec文件中的)和名称即可。
注册邮箱和用户名:
$ pod trunk register XXX@XXX.com '名字' --verbose
然后验证邮箱:
验证邮箱成功:
查看注册信息,看我们是否注册成功:
$ pod trunk me
出现上图类似信息表示注册成功了。
2.提交cocoa pods
$ pod trunk push XXFramework.podspec
提交成功:
3.验证下提交结果
使用下面命令更新本地Spec库:
$ pod repo update
更新下更新本地缓存的Spec库,再去search就能看到了:
$ pod search XXFramework