CocoaPods系列 - 提交

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

1.Specs和Specs Repo

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

举个栗子:

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' => 'tonymillion@gmail.com' }    # 作者
  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。

AFNetworking的Specs文件夹
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/<GITHUB_USERNAME>/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 eloy@example.com 'Eloy Durán' --description='Personal Laptop'
          $ pod trunk register eloy@example.com --description='Work Laptop'
          $ pod trunk register eloy@example.com

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

注册账号之后,我们可以尝试将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)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容