CocoaPods 创建公有 pod 库

1、注册CocoaPods账户信息

创建一个开源pod库,需要注册CocoaPods

pod trunk register 邮箱地址 '用户名' --verbose

这里我们一般使用github邮箱和用户名, 然后在你的邮箱中会收到确认邮件, 在浏览器中点击链接确认即注册成功;

注册成功

查看自己的注册信息,以后当你有了自己的开源Pod库,也可以用此方式随时查看自己发布过的Pods:

pod trunk me
注册信息

2、创建Git仓库

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

A. 共享文件夹:文件夹存放着你要共享的内容, 也就是其他人pod得到的文件, .podspec文件中的source_files需要指定此文件路径及文件类型;
B. LICENSE:开源许可证,默认一般选择MIT;
C.README.md:仓库说明
D. 库描述文件.podspec:本库的各项信息描述, 需要提交给CocoaPods, pod通过这个文件查找到你共享的库, .podspec文件的格式见第4点.

b. 终端命令创建一个全新的工程,具体参考:Using Pod Lib Create

pod lib create 库名

然后可以使用SourceTree等工具上传你的代码到公共仓库, 关于如何使用命令行上传代码到远端仓库, 可以移步:iOS开发使用Git那些事.

3、创建*.podspec文件

.podspec是用Ruby的配置文件,描述你项目的信息
在你的仓库目录下:

pod spec create BitautoTech

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

BitautoTech.podspec

4、编辑*.podspec文件

Pod::Spec.new do |s|
  s.name         = "BitautoTech" # 项目名称
  s.version      = "0.0.1"       # 版本号 与 你仓库的 标签号 对应
  s.summary      = "A short description of BitautoTech." # 项目简介
  s.description  = <<-DESC
  这中间写描述内容
               DESC
  s.homepage     = "https://github.com/huipengo/BitautoTech" # 你的主页
  s.license      = "MIT" # 开源证书
  s.author       = { "huipeng" => "penghui_only@163.com" } # 作者信息
  s.source       = { :git => "https://github.com/huipengo/BitautoTech", :tag => "#{s.version}" } # 你的仓库地址,不能用SSH地址
  s.source_files  = "BitautoTech", "BitautoTech/**/*.{h,m}" # 你代码的位置, BitautoTech/**/*.{h,m} 表示 ** 文件夹下所有的.h和.m文件
  s.exclude_files = "BitautoTech/BitautoTechTests", "BitautoTech/BitautoTechUITests"
  s.requires_arc = true # 是否启用ARC
  s.platform     = :ios, "8.0" # 平台及支持的最低版本
  s.frameworks = "UIKit", "Foundation" # 支持的框架
  # s.dependency "JSONKit", "~> 1.4" # 依赖库

end

验证 .podspec 文件的格式是否正确,cd*.podspec 文件所在的目录下

pod lib lint BitautoTech.podspec

验证成功会出现:

-> BitautoTech (0.0.1)

BitautoTech passed validation.

如果出现ERROR,需要检查所填写项的正确性,如果出现WARN,如下:

-> BitautoTech (0.0.1)
- WARN  | description: The description is shorter than the summary.

[!] BitautoTech did not pass validation, due to 1 warning (but you can use `--allow-warnings` to ignore it).
You can use the `--no-clean` option to inspect any issue.

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

pod lib lint BitautoTech.podspec --allow-warnings --use-libraries

5、给仓库打tag

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

创建标签
终端执行 $ git tag -a 0.0.1 -m '标签说明' 
推送到远程
终端执行 $ git push origin --tags

6、发布 *.podspec

在仓库目录下执行

pod trunk push BitautoTech.podspec

将你的 *.podspec 发布到公有的 speecs 上,这一步操作包括:

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

成功后会出现Congrats信息如下:

Congrats

7、使用仓库

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

pod setup

查询仓库

pod search BitautoTech

如果search出现以下错误:

[!] Unable to find a pod with name, author, summary, or description matching `BitautoTech`

删除 cocoapods 的索引,然后重新 search

rm ~/Library/Caches/CocoaPods/search_index.json

查询仓库

pod search BitautoTech

终端输出:Creating search index for spec repo 'artsy'.. Done!
会触发cocoapods重新拉这个索引文件

8、更新维护

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

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

9、遇到的坑

  • ERROR | [iOS] xcodebuild: Returned an unsuccessful exit code.

*.podspec 文件里面设置的 s.ios.deployment_target = '8.0',最低支持版本为 8.0,而在代码里面用到了 xib,里面勾了 Use Safe Area Layout Guides,项目支持最低版本为 9.0Build 不会报错,执行 pod lib lint *.podspecxcodebuild: Returned an unsuccessful exit code.,原来是 Use Safe Area Layout Guides 的问题,修改 *.podspec 文件 s.ios.deployment_target = '9.0' 修复了这个问题

  • xibUse Safe Area Layout Guides error
    修改 xibBuilds for 选项 改为 Deployment Target (9.0)

参考链接:
CocoaPods创建公有和私有Pod库方法总结
CocoaPods 公有仓库的创建
CocoaPods应用篇之搭建并发布自己的私有库
podspec文件解析
cocoapods系列教程---spec文件

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

推荐阅读更多精彩内容