CocoaPods公有仓库的创建

注册 CocoaPods 账号

想创建开源的Pod库,就要注册一个CocoaPods账号,我们使用终端注册, email 用你的 GitHub 邮箱

$ pod trunk register GitHub_email 'user_name' --verbose

等终端出现下面文字,CocoaPods 会发一个确认邮件到你的邮箱上,登录你的邮箱进行确认。
[!] Please verify the session by clicking the link in the verification email that has been sent to you_email@163.com
注册成功!

确认后再终端输入

pod trunk me

可以看到你的注册信息


006tNbRwgy1fdecs0z72oj30n004q3z2.jpg

创建Git仓库

在 GitHub 上创建一个公开项目,项目中必须包含这几个文件

  • LICENSE:开源许可证
  • README.md:仓库说明
  • 你的代码
  • BYPhoneNumTF.podspec: CocoaPods 的描述文件,这个文件非常重要

如下图:


006tNbRwgy1fdfhvy3c19j31iq0dqn03.jpg

BYPhoneNumTF 文件夹下是我存放代码的地方

BYPhoneNumTF_Demo 是代码使用样例(不是必须的)

创建.podspec

.podspec 是用 Ruby 的配置文件,描述你项目的信息。

在你的仓库目录下,使用终端命令创建

$ pod spec create BYPhoneNumTF

这时就会在你的仓库下生成 BYPhoneNumTF.podspec 文件


006tNbRwgy1fdfioo1c4zj31bq0s20zn.jpg

修改里面的配置就可以发布了~当然,没这么简单。

配置文件中的注释很多,而且很多配置都不是必须的,写多了等下验证还不让过~

so~强烈建议,直接拷贝下面的主要配置进行修改

Pod::Spec.new do |s|
  s.name         = "BYPhoneNumTF" # 项目名称
  s.version      = "1.0.0"        # 版本号 与 你仓库的 标签号 对应
  s.license      = "MIT"          # 开源证书
  s.summary      = "A delightful TextField of PhoneNumber" # 项目简介

  s.homepage     = "https://github.com/qiubaiying/BYPhoneNumTF" # 你的主页
  s.source       = { :git => "https://github.com/qiubaiying/BYPhoneNumTF.git", :tag => "#{s.version}" }#你的仓库地址,不能用SSH地址
  s.source_files = "BYPhoneNumTF/*.{h,m}" # 你代码的位置, BYPhoneNumTF/*.{h,m} 表示 BYPhoneNumTF 文件夹下所有的.h和.m文件
  s.requires_arc = true # 是否启用ARC
  s.platform     = :ios, "7.0" #平台及支持的最低版本
  s.frameworks   = "UIKit", "Foundation" #支持的框架
  # s.dependency = "AFNetworking" # 依赖库
  
  # User
  s.author             = { "BY" => "qiubaiyingios@163.com" } # 作者信息
  s.social_media_url   = "http://qiubaiying.github.io" # 个人主页

end

最最关键的步骤的到了,验证 .podspec 文件的格式是否正确,

$ pod lib lint

验证会出现成功出现

 -> BYPhoneNumTF (1.0.0)

BYPhoneNumTF passed validation. 

但是很多情况没这么顺利,比如:

-> BYPhoneNumTF (1.0.0)
    - WARN  | url: There was a problem validating the URL http://qiubaiying.github.io.

[!] BYPhoneNumTF 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.
[!] The validator for Swift projects uses Swift 3.0 by default, if you are using a different version of swift you can use a `.swift-version` file to set the version for your Pod. For example to use Swift 2.3, run: 
    `echo "2.3" > .swift-version`.
You can use the `--no-clean` option to inspect any issue.

提示我们需要加--allow-warnings这么一句话,命令改为

$ pod lib lint --allow-warnings

若还是提示什么'echo "2.3" > .swift-version'的,就加这么一个东西。

$ echo "2.3" > .swift-version 然后在进行验证,这是应该就可以了。若还是不行,回到配置文件中检查有没有写错配置信息~

给仓库打标签

验证成功后,将仓库提交到远程,然后给仓库打上标签并将标签也推送到远程。

标签相当于将你的仓库的一个压缩包,用于稳定存储当前版本。标签号与你在 s.version = "1.0.0"的版本号一致 1.0.0

创建标签
$ git tag -a 1.0.0 -m '标签说明' 
推送到远程
$ git push origin --tags

发布.podspec

最后一步,发布项目的描述的文件 BYPhoneNumTF.podspec

在仓库目录下执行

pod trunk push BYPhoneNumTF.podspec

将你的 BYPhoneNumTF.podspec 发布到公有的speecs上,这一步其实做了很多操作,包括

更新本地 pods 库 ~/.cocoaPods.repo/master
验证.podspec格式是否正确
将 .podspec 文件转成 JSON 格式
对 master 仓库 进行合并、提交.master仓库地址

成功后将会出现下列信息:

Updating spec repo `master`
Validating podspec
 -> BYPhoneNumTF (1.0.0)

Updating spec repo `master`

--------------------------------------------------------------------------------
 🎉  Congrats

 🚀  BYPhoneNumTF (1.0.0) successfully published
 📅  March 7th, 01:39
 🌎  https://cocoapods.org/pods/BYPhoneNumTF
 👍  Tell your friends!

说明发布成功,你就可以通过上面的URL: https://cocoapods.org/pods/BYPhoneNumTF 进入的Pods查看自己的仓库信息了.

使用仓库

发布到Cocoapods后,在终端更新本地pods仓库信息

$ pod setup

查询仓库

$ pod search BYPhoneNumTF ---
-> BYPhoneNumTF (1.0.0)
   A delightful TextField of PhoneNumber
   pod 'BYPhoneNumTF', '~> 1.0.0'
   - Homepage: https://github.com/qiubaiying/BYPhoneNumTF
   - Source:   https://github.com/qiubaiying/BYPhoneNumTF.git
   - Versions: 1.0.0, 0.0.1 [BYPhoneNumTF repo]
(END)

若出现仓库信息说明已经成功了,这时候你就可以在 Podfile 添加、使用自己的仓库了 pod 'BYPhoneNumTF', '~> 1.0.0'

更新维护

当你的代码更新维护后,就需要重写发布,流程是:

  • 更新BYPhoneNumTF.podspec中的版本号
  • 打上标签推送远程
  • pod trunk push BYPhoneNumTF.podspec 推送到pods仓库

更新后你就可以在 CocoaPods Master Repo 仓库上看到自己的提交记录了。

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

推荐阅读更多精彩内容