如何让自己的iOS库支持Cocoapods

前言

很多时候, 通过cocoapods导入第三方库, 会觉得很方便, 但是过去的自己一直很懒, 自己写的小工具, 每次写项目都是粘过来贴过去, 最近疫情严重, 工作不忙也尝试把自己曾经写的小工具发表到cocoapods上, 方便自己使用, 也方便有同样需求的人使用, 本文主要记录全过程!

正文

  1. 创建仓库

    在github上创建自己的代码仓库, 并将代码库同步到本地, 创建xcode Project, 以便后续使用

  2. 注册Trunk 关于 Trunk

    首先来说明一下什么是Pod Trunk, 点击上面超链可以跳转至官方教程, 这里简单的描述一下吧, Cocoapods trunk 是一种身份验证和CocoapodAPI服务, 要想发布或更新库到cocoapods上你需要注册Trunk

    终端中输入下面的的指令
    ///yourEmail即你的邮箱, xxx换成用户名
    pod trunk register yourEmail 'xxx' --verbose
    

    执行完上面的命令之后会邮箱会受到一条邮件:

    Hi xxxx,
    
    Please confirm your registration with CocoaPods by clicking the following link:
    
      https://trunk.cocoapods.org/sessions/verify/xxxxx
    
    If you did not request this you do not need to take any further action.
    
    Kind regards,
    the CocoaPods team
    
    

    点击邮件超链验证即可

    关于Trunk的命令可以在终端之执行帮助命令获取

    pod trunk [command] --help

    获取到的如下命令

    Commands:
    
        + add-owner      Add an owner to a pod
        + delete         Deletes a version of a pod.
        + deprecate      Deprecates a pod.
        + info           Returns information about a Pod.
        + me             Display information about your sessions
        + push           Publish a podspec
        + register       Manage sessions
        + remove-owner   Remove an owner from a pod
    
    Options:
    
        --silent         Show nothing
        --verbose        Show more debugging information
        --no-ansi        Show output without ANSI codes
        --help           Show help banner of specified command
    

    通过pod trunk me 命令可以查看已注册的信息如下

      - Name:     username
      - Email:    your email
      - Since:    March 20th, 03:59
      - Pods:     None
    
  1. 创建.podspec文件

    在欲提交的仓库同级目录的地方创建, 例如xxx文件夹为我要上传的框架, 则在同级目录先创建xxx.podspec文件, 通过一下命令创建

    //xxx即你的仓库文件夹
    pod spec create xxx
    
  1. 配置podspec

    podspec官方示例请点击 官方示例 , 关于如何编辑podspec文件, 有的人喜欢再命令行中折腾使用vim工具可以编辑, 而我更喜欢使用编辑器编辑, 选择vscode打开, 图形化的编辑更方便, 当然这个根据个人喜好选即可, 刚创建的文件中每个项目都有配置注释, 有耐心的可以研究研究, 基本都是英文, 以下为官方示例我粘贴一段

    Pod::Spec.new do |spec|
     #仓库名字
      spec.name         = 'Reachability'
      #版本
      spec.version      = '3.1.0'
      #证书, 这个是必须要有的, 而且对应仓库里也应该有license文件
      spec.license      = { :type => 'BSD' }
      #仓库服务地址, 一般都放在github上
      spec.homepage     = 'https://github.com/tonymillion/Reachability'
      #作者名字, 可以直接赋值 'youname' 
      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' }
      #仓库文件夹   *是通配符,  可以写 File/*, 意思就是File文件夹下的所有文件
      spec.source_files = 'Reachability.{h,m}'
      #依赖的库
      spec.framework    = 'SystemConfiguration'
      #平台版本, 
      spec.platform = :ios, "7.0"
      
    end
    
  1. 验证podspec文件

    执行如下命令

    pod lib lint yourRepository.podspec
    
    

    执行以上命令如果没问题最终会的到如下结果
    xxx passed validation. 当然有可能你不那么一帆风顺, 如果不顺利的话, 就根据报错内容去看看是那一条配置错了, 他的报错信息还算比较人性化, 基本都能看得懂

  1. 推送podspec, 命令如下:

    pod trunk push xxx.podspec
    

    如果没有意外你会得到如下反馈

    --------------------------------------------------------------------------------
     🎉  Congrats
    
     🚀  XXX (0.0.1) successfully published
     📅  March 22nd, 09:21
     🌎  https://cocoapods.org/pods/XXX
     👍  Tell your friends!
    --------------------------------------------------------------------------------
    

这里需要注意一下, 在第3步中 spec.source的配置内容 tag后的名称即你需要对项目打的标签名, 所以这里一定要注意, 如果名字不一致会出错, 打标签应该都能处理吧, 可以通过git tag命令去给仓库打标签, 我还是偏好使用图形化工具 sourcetree, 记得要同步到服务器端,

完成以上步骤就可以开开心心的在别的项目中导入自己的框架了, 祝你玩的愉快, 有任何问题随时可以留言交流

详细可以参照示例: 示例

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

推荐阅读更多精彩内容

  • Ruby 安装 要安装cocospods 首先需要安装ruby,可以先安装xcode,再安装macport ,最后...
    山天大畜阅读 1,863评论 0 1
  • 网上将自己的项目做成Pod 的文档很多,但是有些文档已经很老了,不适合新手上手,经过这两天的研究我决定还是自己写一...
    黄鱼儿啦啦啦阅读 7,136评论 10 17
  • 当一种编程语言应用于企业级开发,为了提高代码的复用率,伟大的程序员们将一些可以复用的公共的代码封装起来,形成第三方...
    SvenDai阅读 1,664评论 1 3
  • 张同学被告了。原因是和另一个班的女生在厕所吸烟,并且在对方家长和班主任的面前一口咬定,烟是星期天给爸爸买的,忘记给...
    找一句话代替阅读 125评论 0 0
  • 呼槿奔不允许别人坐她的床,有洁癖。 李小乔:你们别看我这么瘦,但我特能吃。所以有什么好吃的,记得分享。 听了这个,...
    容我看看阅读 300评论 0 0