CocoaPods系列 - 提交

上一篇已经讨论过如何制作本地库,本篇文章将讨论如何将本地库提交到CocoaPods,让其他开发者使用自己的库,还有如何对库进行版本管理。

1.Specs和Specs Repo

什么是Spec?
我们使用CocoaPods的指令创建好本地库之后,默认生成的podspec文件。它描述该库某一个版本的信息,比如库的名字、版本号、描述、依赖库等等。

CocoaPods系列 - 提交_第1张图片

举个栗子:

Pod::Spec.new do |spec| 
  spec.name = 'Reachability'   # 库名
  spec.version = '3.1.0'       # 版本号
  spec.license = { :type => 'BSD' }   # 授权协议
  spec.homepage = 'https://github.com/tonymillion/Reachability'   # 库的首页
  spec.authors = { 'Tony Million' => '[email protected]' }    # 作者
  spec.summary = 'ARC and GCD Compatible Reachability Class for iOS and OS X.'   # 库的概要
  spec.source = { :git => 'https://github.com/tonymillion/Reachability.git', :tag => 'v3.1.0' }   # 库的源路径和版本号
  spec.source_files = 'Reachability.h,m'   # 源文件,这个库仅包含Reachability.h和Reachability.m文件
  spec.framework = 'SystemConfiguration'   # 使用到的系统框架
  spec.requires_arc = true  # 是否支持ARC
end

什么是Specs Repo?
Specs Repo是GitHub上的仓库,它包含了所有可用的第三方库。每个库都会有独立的文件夹,每个版本以独立的子文件夹保存。文件夹中只有一个描述文件,也就是Spec。

CocoaPods系列 - 提交_第2张图片
AFNetworking的Specs文件夹
CocoaPods系列 - 提交_第3张图片
AFNetworking 1.0版本的Specs文件夹

2.提交到CocoaPods

我们要提交自己的库到CocoaPods,实质上要做两件事:

  1. 把源文件提交到GitHub
  2. 将Spec文件提交到Specs Repo

在提交之前最好先检查Spec的配置是否正确,CocoaPods为我们提供了这么一个命令pod lib lint
运行结果:


 -> CFALibrary (0.1.0)
    - WARN  | url: There was a problem validating the URL https://github.com//CFALibrary.

[!] CFALibrary did not pass validation, due to 1 warning (but you can use `--allow-warnings` to ignore it) and all results apply only to public specs, but you can use `--private` to ignore them if linting the specification for a private pod.
You can use the `--no-clean` option to inspect any issue.

库没有通过验证,说明Spec配置有问题。根据上面的提示,我们知道库的原路径没有设置对,无法从该URL获取需要的信息。所以,我们要做第一件事,把库文件推送到GitHub。

将文件推送到GitHub的方式有多种,不在本篇讨论范围内。最简单的做法,使用GitHub客户端,将项目文件拖入,点击Publish即可。

推送到GitHub后,将spec中的homepage和source路径改成GitHub上的项目路径,重新执行pod lib lint,提示验证通过。

 -> CFALibrary (0.1.0)

CFALibrary passed validation.

接下来要做第二件事,把Spec提交到Specs Repo。
提交之前,你需要注册pod账号。实质上是将"邮箱--名称--电脑"绑定在一起,所以这里不需要密码。

pod trunk register EMAIL [NAME]

以下是该指令的帮助文档,大概意思是:
如果第一次注册,邮箱和名称都是必须的。如果已经注册过,可以省略名称(除非你想修改名称)。推荐填写描述信息,以及给出了一些Examples,按着Example做就可以了。

pod trunk register EMAIL [NAME]

      Register a new account, or create a new session.

      If this is your first registration, both an `EMAIL` address and your
      `NAME` are required. If you’ve already registered with trunk, you may omit
      the `NAME` (unless you would like to change it).

      It is recommended that you provide a description of the session, so that
      it will be easier to identify later on. For instance, when you would like
      to clean-up your sessions. A common example is to specify the location
      where the machine, that you are using the session for, is physically
      located.

      Examples:

          $ pod trunk register [email protected] 'Eloy Durán' --description='Personal Laptop'
          $ pod trunk register [email protected] --description='Work Laptop'
          $ pod trunk register [email protected]

执行
pod trunk register [email protected] Jack
结果
[!] Please verify the session by clicking the link in the verification email that has been sent to [email protected]
去邮箱认证即可。

注册账号之后,我们可以尝试将Spec提交到Specs Repo,这里有三步:

  1. 给项目打tag(必须要打tag,CocoaPods中的不同版本,实质是不同的tag,不打tag会导致下一步验证不通过)
git tag 0.1.0
git push origin 0.1.0
  1. 检查合法性
## 指令
pod spec lint CFALibrary.podspec
## 结果
-> CFALibrary (0.1.0)
Analyzed 1 podspec.
CFALibrary.podspec passed validation.
  1. 提交到Specs Repo
## 指令
pod trunk push CFALibrary.podspec

结果如下,表示已经提交到CocoaPods,其他开发者可以直接使用。

Updating spec repo `master`

CocoaPods 1.0.0 is available.
To update use: `sudo gem install cocoapods`
Until we reach version 1.0 the features of CocoaPods can and will change.
We strongly recommend that you use the latest version at all times.

For more information, see https://blog.cocoapods.org and the CHANGELOG for this version at https://github.com/CocoaPods/CocoaPods/releases/tag/1.0.0

Validating podspec
 -> CFALibrary (0.1.0)

Updating spec repo `master`

CocoaPods 1.0.0 is available.
To update use: `sudo gem install cocoapods`
Until we reach version 1.0 the features of CocoaPods can and will change.
We strongly recommend that you use the latest version at all times.

For more information, see https://blog.cocoapods.org and the CHANGELOG for this version at https://github.com/CocoaPods/CocoaPods/releases/tag/1.0.0

  - Data URL: https://raw.githubusercontent.com/CocoaPods/Specs/ddbcb337542df378e9b7a7dc711f324993ca88e4/Specs/CFALibrary/0.1.0/CFALibrary.podspec.json
  - Log messages:
    - May 20th, 02:47: Push for `CFALibrary 0.1.0' initiated.
    - May 20th, 02:47: Push for `CFALibrary 0.1.0' has been pushed (3.049576125 s).

如果不放心,可以使用pod search LibraryName来查询是否已提交到CocoaPods.

# 指令
pod search CFALibrary
# 有查询结果,说明已经正确提交到CocoaPods
-> CFALibrary (0.1.0)
   My CFALibrary.
   pod 'CFALibrary', '~> 0.1.0'
   - Homepage: https://github.com/XXX/CFALibrary
   - Source:   https://github.com/XXX/CFALibrary.git
   - Versions: 0.1.0 [master repo]
(END)

你可能感兴趣的:(CocoaPods系列 - 提交)