发布自己的开源框架到CocoaPods

这两天在写了一个导航条控件,顺带把它发到了CocoaPods上,现在总结一下,顺带讲一下我遇到的问题,希望能够帮助到大家。

总结一下就是以下几个步骤:

1.把代码提交到Github
2.给你的git打tag
3.创建.podspec描述文件
4.编辑.podspec描述文件
5.验证.podspec描述文件是否合法
6.注册CocoaPods
7.提交到CocoaPods

下面一一做讲解,开始喽!

1.把代码提交到GitHub上

首先,创建GitHub仓库,创建的时候一定要选择下面这两项,license选择“MIT”,如果没选择license,想法添加一个license进入,要不然第5步验证的时候会报Unable to find a license file错误

// 创建本地仓库
git init
// 添加名称为origin的远程连接
git remote add origin '你的github项目地址'
// 将本地代码加入本地仓库里
git add .
// 提交修改到本地仓库
git commit -m '你的修改记录'
// 推送master分支的代码到名称为origin的远程仓库
git push origin master
711E296C-75E1-4C22-BCCC-87E3DBA8E97F.png

然后,把仓库Clone到本地,此时的文件夹应该是这个样子,可见的只有LICENSE和README两个文件


38A818CB-E0E5-403D-BFB7-526C3F6158B7.png

然后把你的库文件和项目Demo一同放入这一目录下


QQ20181107-215524@2x.png

最后就可以把这些Push上去了。

2.给你的git打tag

打tag的目的就相当于给你的开源框架制定版本号,每个版本一个tag,下面是打tag的流程:

// 查看本地tag
git tag
// 添加本地tag 0.0.1
git tag -a 0.0.1 -m 'release 0.0.1'
// 将tag传到远程
git push origin --tags

tag的其他操作

// 删除本地tag
git tag -d 1.0.0
// 删除远程tag
git push origin -d tag 1.0.0

3.创建.podspec描述文件

上传到cocoapods时主要就依赖着.podspec的描述文件来进行配置的,所以我们要先建立一个.podspec的描述文件:

// 初始化.podspec文件
pod spec create 你的项目名

4.编辑.podspec描述文件

用xcode打开此文件,会发现里面有很多信息,带#号的注释不用管,我们依次看看他们所代表的含义:

  • s.name:名称,pod search 搜索的关键词,注意这里一定要和.podspec的名称一样,否则报错
  • s.version:版本号(必须和上面打的tag中的version保持一致)
  • s.ios.deployment_target:支持的pod最低版本
  • s.summary: 简介
  • s.homepage:项目主页地址
  • s.license:许可证
  • s.author:作者
  • s.social_media_url:社交网址,这里我写的微博默认是Twitter,如果你写Twitter的话,你的podspec发布成功后会@你
  • s.source:项目的地址
  • s.source_files:需要包含的源文件
  • s.resources: 资源文件
  • s.requires_arc: 是否支持ARC
  • s.dependency:依赖库,不能依赖未发布的库
  • s.dependency:依赖库,如有多个可以这样写

下面是个样本,仅供参考

Pod::Spec.new do |s|

  s.name         = "GLYPageView"
  s.version      = "0.0.1"
  s.summary      = "一个便捷标签栏."

  s.description  = <<-DESC
  GLYPageViewKit
                   DESC

  s.homepage     = "https://github.com/Jason318/GLYPageView"
  s.license      = "MIT"
  s.author             = { "Jason318" => "834699083@qq.com" }
  s.platform     = :ios, "7.0"
  s.source       = { :git => "https://github.com/Jason318/GLYPageView.git", :tag => "#{s.version}" }
  s.source_files  = "GLYPageView", "GLYPageView/GLYPageView/*.{h,m}"
  s.requires_arc = true

end

5.验证.podspec描述文件是否合法

pod spec lint 你的项目名.podspec 

验证过程可能会碰见几个问题,先说说我碰见的几个问题:

- ERROR | [iOS] file patterns: The `source_files` pattern did not match any file.

这个问题是因为podspec里的 s.source_files路径有问题,没有匹配到想对应的文件,所有有下面的编译报错。这个路径是相对podspec文件而言的。

unknown: Encountered an unknown error (/usr/bin/xcrun simctl list -j devices

原因是xcode模拟器找不着报错,解决办法:
steps 1:终端获取Xcode路径,即把Xcoe拖进终端(一般都是/Applications/Xcode.app)
steps 2:在终端中继续输入 sudo xcode-select -switch Xcode路径/Contents/Developer 即可。

这个过程会出现很多错误,这里不一一列举,大家按照错误信息自行修改,不过一般不会出现错误,只要你按照军哥说的做,基本上是没有问题的,因为军哥走过的坑已经告诉你们了

6.注册CocoaPods

pod trunk register 你的邮箱 '你的用户名' --description='你的描述'

成功的话就会受到一份邮件,点击邮件中的链接后验证一下:

pod trunk me

成功的话会返回以下类似字段:

  - Name:     WCL
  - Email:    wangchonglei93@icloud.com
  - Since:    January 10th, 21:32
  - Pods:
  - WCLImagePickerController
  - WCLShineButton
  - CRRefresh
  - Sessions:
  - January 10th, 21:32 - July 22nd, 07:38. IP: 58.132.205.59

如果你的pod是由多人维护的,你也可以添加其他维护者:

pod trunk add-owner ARAnalytics kyle@cocoapods.org

7.提交到CocoaPods

pod trunk push 命令会首先验证你本地的podspec文件(是否有错误),之后会上传spec文件到trunk,最后会将你上传的podspec文件转换为需要的json文件。在工程根目录(包含有.podspec)下执行命令:

pod trunk push ECGCustomAlertView.podspec

没有错误的话,会提示你成功,并返回一下类似代码:

--------------------------------------------------------------------------------
 ��  Congrats

 ��  CRRefresh (1.0.0) successfully published
 ��  March 16th, 07:14
 ��  https://cocoapods.org/pods/CRRefresh
 ��  Tell your friends!
--------------------------------------------------------------------------------

最激动人心的时刻到了,执行pod search xxx 去查看你的库吧,对了,别忘记pod setup更新本地CocoaPods库。

最后的最后,实例仅供参考

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

推荐阅读更多精彩内容