将库发布至CocoaPods

文章目录
  1. 注册trunk
    1. 注册
    2. 验证邮箱
    3. 注册成功
  2. 配置podspec
    1. 创建一个podspec文件
    2. 编辑podspec文件
  3. 上传podspec
    1. 添加版本分支
    2. 上传podspec
    3. 检查是否成功

在iOS开发者中,最流行的第三方依赖管理工具应该就是CocoaPods了,这是一个可以自动管理库之间依赖的工具,让开发者使用第三方库处理依赖非常简单。

当我们自己造了轮子,想发布到CocoaPods上方便他人使用就是我们这篇文章的主题。

注册trunk

注册

pod trunk register talisk@talisk.cn 'talisk'

这一步向Pod的服务器注册了trunk,完成后他告诉你去邮箱点击验证邮件,验证邮件内容是这样的:

[CocoaPods] Confirm your registration.

no-reply 发给 孙恺

2016/1/14 20:58 详细信息

Hi talisk,

Please confirm your registration with CocoaPods by clicking the following link:

https://trunk.cocoapods.org/sessions/verify/03320a86

If you did not request this you do not need to take any further action.

Kind regards, the CocoaPods team

验证邮箱

点击验证地址,然后在终端里验证是否成功注册:

注册成功

pod trunk me

如果成功注册,会收到你的注册信息:

1
2
3
4
5
6
7
8
$ pod trunk me
- Name: talisk
- Email: talisk@talisk.cn
- Since: January 14th, 06:58
- Pods:
- SKChinaCitySelector
- Sessions:
- January 14th, 06:58 - May 26th, 08:05. IP: 175.25.xxx.xxx

看到这样婶的结果,就说明注册成功了。

配置podspec

podspec文件就是用来告诉CocoaPods,你的库的详细信息,作者、版本、依赖等等。这里存了所有支持CocoaPods的库的所有版本的podspec文件。

创建一个podspec文件

在终端中定位到你的库的位置,输入pod spec create <项目名>,此时CocoaPods会自动给你创建一个以你的项目名为名称的podspec文件,这个文件中内容很多,其实就是CocoaPods给你提前写好的模板,模板里好多注(废)释(话),其实我们真正用到的内容并不多。

编辑podspec文件

podspec文件里井号开头的都是注释,从do开始到`end部分都是文件主体。

  • s.name库的名称。
  • s.version库的版本。
  • s.summary库的概述,基本就是一句话说清楚是干嘛的库。
  • 可选s.description对库的介绍,这个参数之前有一段注释,大概的意思就是说description用于生成搜索结果的tag。
  • s.homepage项目主页。
  • 可选s.screenshots截图,是几个图片URL的字符串,中间用逗号分割。
  • s.license库所遵循的协议,要指明许可证文件,这个一般GitHub上都会有模板,当然也可以自己写。
  • s.author作者信息,可以只写作者的名字或者名字邮箱都写。
  • 可选s.social_media_url,社交媒体主页,可以是推特、微博这种。
  • s.platform库所针对的平台,举例比如s.platform = :ios, "7.0"
    • 如果是针对多平台的,可以这么写:s.watchos.deployment_target = "2.0"watchOS可以替换为iOSosxtvos
  • s.source指明库的位置,支持git、hg、bzr、svn、http地址。
  • s.source_files写清楚源文件的位置,因为git上往往上传的是包括example的项目目录,这里则要指出库文件的位置。
  • 可选s.exclude_files排除之外的文件路径。
  • 可选s.public_header_files公用头文件的路径。
  • 可选资源文件,这个库需要用到的资源列表,这些资源会通过一个phase script拷贝到target目录中,没在这个列表里的文件就不会拷贝进去。另外,就不要拷贝没必要的文件了,比如说是测试、例子、文档等等。
    • s.resource指定资源文件
    • s.resources指定资源文件们的路径
    • s.preserve_paths保护文件的路径
  • 可选链接这个库需要用到的框架或者库,这个不同于dependency依赖,因为依赖必须同样是CocoaPods上的资源。
    • s.framework需要用到的框架。
    • s.frameworks需要用到的框架们,中间用逗号分隔。
    • s.library需要用到的库和s.libraries需要用到的库们。
  • 可选项目设置,包括是否支持ARC、头文件搜索路径、项目依赖等等。
    • s.requires_arc为ture说明需要ARC环境,否则则为MRC。
    • s.xcconfig一些其他对Xcode的设置,比如头文件搜索路径。
    • s.dependency项目依赖和版本,比如"AFNetworking", "~>2.0"

我举个例子我这里的配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#SKChinaCitySelector.podspec
Pod::Spec.new do |s|
s.name = "SKChinaCitySelector"
s.version = "1.0.0"
s.summary = "An China city selector."
s.homepage = "https://github.com/talisk/SKChinaCitySelector"
s.license = { :type => "MIT", :file => "LICENSE" }
s.author = { "Swain" => "talisk@talisk.cn" }
s.platform = :ios, "8.0"
s.ios.deployment_target = "8.0"
s.source = { :git => "https://github.com/talisk/SKChinaCitySelector.git", :tag => s.version}
s.source_files = 'Source/*.{h,m}'
s.requires_arc = true
end

上传podspec

在这步骤之前,建议先把项目Push到GitHub上。

添加版本分支

终端里执行:

1
2
git tag '1.0.0'
git push --tags

上传podspec

1
pod trunk push <项目名>.podspec

检查是否成功

由于上传后的库文件需要经过审核才能被看到,那么可能会经过一段时间的等待,而且你本机其实是有一个库的,我们如果执行pod search的时候其实先在本机的库里查询,有可能这时告诉我们查询不到,所以我们需要先更新下本机的库,用命令pod setup来执行这一步操作,由于一些众所周知的位置原因,这一步的速度非常慢,建议挂代理。

完事之后,可以再用pod search查询,如果能够查到自己的库说明大功告成。