组件化开发之-Cocoapods使用及创建发布自己的Pod

原创 2017-05-09

关键点:

  • Cocoapods安装及基本用法
  • Cocoapods注册Trunk
  • 部署一个开源的pod
  • 创建自己的私有的pod

由于要适应某些业务的快速变化,现目前需要进行组件化开发,其实这是一个很好的改变,关于如何进行组件化开发、如何将基础组件业务组件进行剥离开来、如何使用Mediator模式进行业务间相互通信相互调用等,在后续进行深入分析及实践之后再来讨论,这里就先从最原始 工具 说起。(顺便说一下:既然需要有一个比较大的改变,也有这个机会来实践,那就索性从Objective-C过度到Swift来进行开发吧!)。
   Cocoapods相信你使用第三方框架是经常使用到的,这是一个很好用的iOS管理依赖工具,它既可以让你很方便的使用第三方库,也允许你将自己项目中的组件交由它进行管理。下面就来说一说如何使用cocoapods管理工具:

Cocoapods工具的安装

Cocoapods安装方式有两种可以直接通过官网下载.app进行安装,不过我比较喜欢命令行安装(需要依赖ruby环境,Mac都搭建好了ruby环境,这个我们不需要去关心):

   $ sudo gem install cocoapods

可能你在上述安装过程中会失败,那可能是因为网络的原因,现在我们来替换一下Ruby镜像:

// 删除原有的镜像源  
$ gem sources --remove https://rubygems.org/  

// 添加国内最新的镜像源(因为之前淘宝的那个好像不更新了)
$ gem source -a https://gems.ruby-china.org/  

// 接着执行
$ gem sources -l

// 如果出现
> *** CURRENT SOURCES ***
> 
> https://gems.ruby-china.org/

// 说明成功了,现在再来执行安装即可
$ sudo gem install cocoapods

Cocoapods工具的基本的用法

Cocoapods提供了很多功能,但是我们平常使用的无外乎根据项目需要创建自己的Podfile、安装Pod、更新Pod

// 创建一个自己的Podfile,首先你必须进入到你项目所在的文件夹下面,然后执行
$ pod init

// 通过vi查看并编辑你的Podfile(根据你的需要添加第三方库)
$ vi Podfile
// 保存Podfile之后,执行安装
$ pod install

// 有时候你可能会需要使用到
$ pod update

tips:什么时候使用pod install 什么时候使用pod update呢,我相信大多数人比较疑惑

  • pod install: 当你在工程中需要安装新的pods时。即使你已经有了一个Podfile并且之前已经执行了pod install;或者说你需要从你的工程中添加/移除一个pods
  • pod update: 仅仅当你想要更新一个新版本的pods

至此你已经掌握了Cocoapods最简单的使用方法了,更多关于Cocoapods的使用可以至官网Guides 或者通过pod --help 来查看使用方法。
接下来就来讲讲如何创建发布自己的Spec,首先你需要注册一个账号:

Cocoapods注册Trunk

在你想创建一个自己私有库或者发布一个共有的pods之前,你需要有一个Cocoapods Trunk:

$ pod trunk register [Your-Email] '[Your-Name]' --description='[Your-Desc]'

> [Your-Email]: 任意邮件,但是我比较推荐你使用github上的Email
> [Your-Name]: 推荐使用github上使用的Name
> [Your-Desc]: 一个简单的描述,往往这个时候我们使用的是自己电脑的一个描述

// 比如我自己注册了一个
$ pod trunk register wangcccong@foxmail.com 'ApterKing' --description='wangcong Mac Pro 13'

// 注册完成后,你可以通过[pod trunk me]查看信息
$ pod trunk me

部署一个开源的pod

如果你是一个非git版本控制使用的开发者,那么在你部署一个开源的library之前,我建议你看一看我的另一篇Git基础,这里只需要用到比较简单的Git使用。

  • 在你的Github上创建一个repository
  • 将你的库直接clone下来
$ git clone git@github.com:ApterKing/AKExtension.git
// 完成之后进入到所在目录
$ cd ../AKExtension
  • 创建.podspec
$ pod spec create [NAME]
> [NAME]: podspec 名称,一般与你在git上创建的repository相同
// 如:
$ pod spec create AKExtension
  • 下面来将你的代码或者资源添加到项目中
// 我一般会先创建一个文件夹,用于放置我的{.h/.m/.swift  Assets}等
$ mkdir Sources
// 将你所需的文件拷贝至文件夹,如下就是这个pod的
  • 接下来你需要将你的资源或者文件添加到git并提交
// 添加所有文件
$ git add .   
// 提交
$ git commit -m "Initial AKExtension"
// push到你的远程仓库
$ git push
// 接下来就是需要使用到的一个Tag,这个在你的.podspec中需要配置
$ git tag -m "Initial Tag" 0.0.1
// 将tag添加至你的远程仓库
$ git push --tags
  • 修改.podspec

下面就是我的.podspec,当然你也可以根据之前生成的提示自己修改或者在github上搜索一个别人写好的.podspec就行修改


  • 通过手动方式检验一下你的.podspec是否正确
// 进入到.podspec所在目录
$ pod spec lint
// 如果出现错误,需要修改到提示无误后方可执行下一步
  • 提交公有library
$ pod trunk push [NAME].podspec
  • 现在就来看看是否成功
// 先更新一下repo
$ pod repo update
// 查找一下你提交的pod
$ pod search 'AKExtension'

tips: 如果你在pod search无法找到你的pod,可以参照以下步骤:

  • 执行 pod repo update 后重新pod search

或者:

  • pod setup 然后删除 rm ~/Library/Caches/CocoaPods/search_index.json 再重新pod search

部署一个私有的pod

在上面一节你已经了解了如何部署一个共有的pod了,但是往往大多数时候你是不能部署一个共有的pod。比如你公司自己开发的基础组件代码、业务组件代码等,这个时候你就需要一个private pod了,下面就来简单说一说如何创建一个private pod。我们还是依托于git,毕竟这个代码以后需要与别人共同开发与维护,当然你也可以在自己的服务器上搭建,只要能够保证你所在的Team能够有访问权限就可以了。

  • 重复上一章节的创建github repository,此时你只需要注意选择private,因为在github上private需要付费,这里我就选用开源中国的git
  • 创建一个私有Repo
$ pod repo add REPO_NAME SOURCE_URL
> REPO_NAME: repo 名称
> SOURCE_URL: 指向的地址
//如
$ pod repo add AKSwifty git@git.oschina.net:wangcccong/AKSwifty.git
  • 检查是否操作成功
$ cd ~/.cocoapods/repos/AKSwifty
$ pod repo lint .
  • 创建并修改.podspec

相信你在上一章节已经了解了如何通过命令来创建.podspec了,这里我们再次创建一个,但是我们需要让它更有意义,请添加上你私有repo的名称,我们首先在git.oschina.net 上创建一个私有仓库,比如我们需要一个仪表盘(DashboardView)

创建好之后,按照上一章节的步骤,你需要将你的仓库clone到本地,添加需要的文件及资源等,设置tag,创建.podspec,修改.podspec

  • 添加你的Podspec到私有repo
$ pod repo push AKSwifty AKSwifty+AKDashboardView.podspec
  • 私有仓库的使用你应该懂的,需要在Podfile添加source源
source 'https://github.com/CocoaPods/Specs'
source 'https://git.oschina.net/wangcccong/AKSwifty.git'  
platform :ios, "9.0"  
target "XXX" do  
    pod 'AKSwifty+AKDashboardView','~>0.0.1'  
end

关于cocoapod的介绍就到这里吧...

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

推荐阅读更多精彩内容