Swift发布库到CocoaPod

缘由

  1. 公司需求,发布SDK
  2. 开源精神,让更多人的人使用你优秀的代码

建立工程,编写类库

  1. 新建一个iOS或其他platform的demo工程,通常Single View App即可
  2. 在demo工程新建target, file -> new -> target,选择创建Cocoa Touch Framework,该target用于包含你所要开源的所有库,假设取名为framework
  3. 在framework的target文件夹里面添加自己的开源代码,注意想要暴露出来的类、方法、属性均需要使用public或者open等修饰
  4. 现在,在demo中可以通过import framework来引用库,测试已写好的功能,测试完成后,就可以准备发布到CocoaPod了

发布到CocoaPod流程

  1. 将代码提交到GitHub,并打上tag即release版本,该tag必须和pod配置文件的tag一致,否则push到pod会报错
  2. 创建配置文件xxx.podspec,xxx为发布到pod的名称,取名时先到pod搜索下是否已存在相同的库名,因为是唯一的,如果已存在则需要定义其他名称,命令如下:
pod spec create xxx
  1. 修改配置文件,可以在GitHub上参考其他项目是怎么写的
Pod::Spec.new do |s|
    s.name         = "KJTouchIdManager"
  s.module_name  = "TouchIdManager"
  s.version      = "0.0.1"
  s.summary      = "TouchId/FaceId manager on iOS 8 or later."
  s.description  = "An easy way to use TouchId or FaceId, support iOS 8 or later"
  s.homepage     = "https://github.com/Smiacter/TouchIdManager"
  s.license      = "MIT"
  s.author             = { "Smiacter" => "Smiacter@gmail.com" }
  s.platform     = :ios
  s.platform     = :ios, "8.0"
  s.swift_version = "4.1"
  s.source       = { :git => "https://github.com/Smiacter/TouchIdManager.git", :tag => "#{s.version}" }
  s.source_files  = "TouchIdManager/*.swift"
end
- name -> pod库的名称
- mudule_name -> 引用的module名称即工程创建的target名,如果和上述的name不一致的话需要指定,如果一样可以省略
- version -> 版本,和GitHub代码的tag一致
- summary -> pod库的简单介绍
- description -> pod库的详细描述,它的长度一定要比summary长,不要会有警告
- homepage -> GitHub访问路径
- license -> 遵循的授权版本
- author -> 作者,一般是自动生成
- platform -> 操作系统及最低支持版本,可指iOS/tvOS/watchOS/tvOS
- swift_version -> 如果用的是Swift,指定你使用的版本,因为pod在进行代码检查时的版本可能与你的不一致
- source -> GitHub代码仓库地址,请copy使用HTTPS的那个git地址,使用SSL的需要依赖环境,校验无法通过
- source_files -> 库的有用文件,它会告诉pod需要克隆哪些文件,*代表任意文件
- 其他,生成的.podspec文件包含了很多其他参数,可以根据自己的需求打开某些注释,打造属于你自己的podspec
  1. 注册trunk,pod是通过trunk来发布的
pod trunk register "email address" "user name" --description = "optional"
  1. 验证库代码和podspec的有效性,查看代码、配置文件是否有误
pod spec lint xxx.podspec

如果出现错误,根据相关提示进行修改后再验证,提示一般都比较易懂,如果实在看不懂就自行搜索进行修改。当出现xxx.podspec passed validation.则说明验证通过。

  1. 真正发布(push)到pod仓库, allow-warning是可选的
pod trunk push xxx.podspec --allow-warning

如果出现Congrats则说明创建你自己的pod库成功,之后就可以使用pod进行使用该库了

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

 🚀  xxx (0.0.1) successfully published
 📅  September 13th, 20:17
 🌎  https://cocoapods.org/pods/xxx
 👍  Tell your friends!
------------------------------------------------------------

写在结尾

这就是自建pod库的基本流程,开源,让世界更美好,让自己更优秀。

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

推荐阅读更多精彩内容

  • 一、创建的github仓库原文地址 1 进入Github网站www.github.com登陆自己的账号后 2 建立...
    freesan44阅读 3,916评论 2 12
  • 目录 [创建与维护](# 1)创建并设置一个私有的Spec Repo创建PodLib创建lib所对应的podspe...
    水在玩焱阅读 8,282评论 1 10
  • 我要的是啥子?我要的是长久的快乐,而想要长久的快乐需要人生的每个层面都让我感到快乐才行,这其中包括人际关系、身体与...
    GK黎强阅读 100评论 0 0