使用Cocoapods创建私有库Pods

热更新,热修复,RN,组件化开发简直是各个开发群的热门话题。作为一个开发小菜鸟,真是忙不过来,搞这个,还是搞那个?一脸懵逼。上个月苹果爸爸的一封警告邮件,让iOS开发界炸了锅,禁止动态下发代码,真是让人猝不及防。项目做久了,一直迭代,代码越来越乱,迫切需要对代码重构,由此想到了最近大热的组件化开发,要做组件化开发,首要管理好组件,所以Cocoapods是iOS最佳管理工具,所以最近更深入的了解学了Cocoapods工具。

前言

今天这篇文章记录自己使用CocoaPods工具创建公司自己的私有库,其实网上有很多教程,这里只是记录自己的使用过程,下面将尽量详细记录步骤,希望对大家有用,觉得有用的小伙伴请高抬贵手点个赞哦!

创建公司自己的私有库

步骤一 创建一个组件git仓库

我们公司有自己的git服务器,当然也可以使用GitHub这些公共的服务器,这里就不在多说。我在我们公司的git服务器创建了一个名叫XLZGComponent的仓库。创建好了之后,复制git仓库地址,第一步就算完成了。

步骤二 添加私有库到CocoaPods的repo

这一步就是将我们刚刚创建的组件库地址和CocoaPods关联起来,我们在pod install的时候,就会从我们私有仓库下载。下面是添加的命令:

   pod repo add REPO_NAME SOURCE_URL
   REPO_NAME:就是自定义的私有库的名字
   SOURCE_URL:就是我们在git上创建的私有库的git地址

我这里就是:

   pod repo add XLZGComponent http://*******/XLZGComponent.git

添加完成后,可以查看CocoaPods的repo多出来一个XLZGComponent,查看repo的方法如下:

    ls ~/.cocoapods/repos

查看的结果就是:

    XLZGComponent master 

XLZGComponent这个就是我们新添加的我们自己有的,master就是原有的公共repo。

步骤三 为将要组件化的项目制作*.podspec文件

这里作为测试,我简单的创建了一个testA的项目,项目的目录如下:

mulu.png
项目名:testA
项目下面有一个文件夹:testA,里面随便创建了一个类,这个类
就是我们即将作为组件加入私有库的两个文件。

接下来在git服务器上为该项目创建一个git仓库,我的是仓库地址是:

    http://*******/testA.git
    ps:testA和组件名字一致

接着就是要制作组件的podspec文件了,在项目的更目录下创建一个testA.podspec文件,接着编辑podspec文件,文件内容如下:

 Pod::Spec.new do |spec|
    #项目名称
    spec.name         = 'testA'
    #版本号
    spec.version      = '0.1.0'
    #开源协议,记得创建一个LICENSE文件,内容可以百度
    spec.license      = {:type =>"MIT",:file => "LICENSE"}
    #对开源项目的描述
    spec.summary      = 'testA is a good component'
    #开源项目的首页
    spec.homepage     = 'https://github.com/chunguiLiu/BGNetwork'
    #作者信息
    spec.author       = {'simple_Dev' => '12479697@qq.com'}
    #项目的源和版本号
    spec.source       = { :git => 'https://******/testA.git', :tag => '0.1.0' }
    #源文件,这个就是供第三方使用的源文件
    spec.source_files = "testA/testA/*"
    #适用于ios7及以上版本
    spec.platform     = :ios, '8.0'
    #使用的是ARC
    spec.requires_arc = true
    #依赖AFNetworking,如果有什么第三方依赖这样添加
    #spec.dependency 'AFNetworking'
    end

编辑好了就可以保存。关于podspec文件可以百度,还有一些配置信息我这里不需要就没有列出来。这里需要注意的是,也要在该目录下创建一个LICENSE文件,文件的内容请自行百度,这里不添加这个文件,后面push的时候会报警告,而导致push失败。

步骤四 发版,验证podspec文件,push podspec文件

创建好了podspec文件,假设我们的组件也开发好了,编译ok,接着就是把项目提交push到git服务器上去,然后发个版,也就是打个tag。我的步骤如下:

   //添加所有新加的文件
    $ git add .
   //提交新添加的文件到本地git
    $ git commit -m 'add file'
   //将本地更新push到远程git服务器
    $ git push origin master
   //给本地仓库打个tag
    $ git tag -m 'add tag' '0.1.0'
   //将tag推送到远程服务器
    $ git push --tags

接着就是验证我们刚才的podspec文件,验证指令是:

 $ pod lib lint

如果没有错误和警告我们就可以推送到服务器了,推送使用的命令如下:

$ pod repo push REPO_NAME SPEC_NAME.podspec
它也会先验证,然后再推送。我这里推送testA命令是:

$ pod repo push XLZGComponent testA.podspec
如果没有错误,但是有警告,我们就将警告解决,也可以加--allow-warnings来提交

$ pod repo push XLZGComponent testA.podspec --allow-warnings

4.最后就可以在pod search 搜索testA了,到这里我们私有库也就成功。

$ pod search testA

pod 'testA', '~> 0.1.0'
- Homepage: http://*******/testA
- Source:   http:**********/testA.git
- Versions: 0.1.1, 0.1.0 [XLZGComponent repo]
使用私有库

使用方式就是在Podfile中,添加我们自己私有源地址,然后pod我们的组件名字就可以了,例如:

#官方Cocoapods的源
source 'https://github.com/CocoaPods/Specs.git'
#本地私有源
source 'https://github.com/liuchungui/first.git'
platform :ios, '8.0'

target ‘test‘ do
  pod 'AFNetworking'
  pod 'testA'
end

最后pod install就可以啦。

写在最后

最后提醒大家,记得添加.gitignore文件,过滤提交的git的内容,不然把一些不必要的文件都提交到服务器上。认真想起来其实建立私有库很简单,就是那么几步。创建一些文件,配置一下就可以了。后面一篇,我会介绍一下使用一些脚本,来简化过程,减少一些编辑,设置过程,有些必要过程还是必须的。如果觉得此文中有哪些不明白的地方,可以留言,或者发私信,共同探讨。如果觉得文中有不对的地方也请大家慷慨指出,以便我改正。最后谢谢大家的阅读,喜欢的话就请点个赞吧,谢谢。

分享是一件快乐的事情!

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

推荐阅读更多精彩内容