Cocoapods私有库管理

镇楼

前言

在我们开发过程中,有一些自己封装的工具类或是库,为了方便管理,我们借助cocoapods来实现。我们平时所接触的第三方库,是公开的,我们自己的代码使用私有库来进行。

私有库相关概念和原理

cocopods为包管理,那么顾名思义它只是管理我们所存代码的一些信息,并不是真正管理我们的代码。那么这里就需要两个仓库,其中一个仓库是托管cocoapods所需要的配置文件,另外一个仓库才是存放我们的代码。

工作原理
工作原理

cocoapods是通过.podspec文件来索引私有库真的存代码的仓库。其所有配置文件托管在Master Repo

核心概念:

.podspec : 该文件为你的代码仓库索引描述文件,CocoaPods通过该文件对你真正存储代码工程的 Git 仓库进行索引与下载

Lib : 你上传到远程Git仓库的代码工程,将来用于开源共享或则私有

Git 仓库 : Git介绍

CocoaPod 通过第一个 Git 仓库的里 .podspec 描述文件找到真正存储你代码的第二个 Git 仓库,然后根据 .podspec 里的相关字段对特定目录下的代码,三方依赖库,资源文件等进行下载。

换一种说法来理解,第一个 Git 仓库里的 .podspec 描述文件相当于我们的指针, 其指向的另一个 Git 仓库(内存)才是你自己真正所共享的代码。

私有库创建流程

基于git的仓库有很多,由于GitHub的私有库是收费的,所以笔者使用的码云。

1.首先创建仓库1,用于托管我们的代码。

创建仓库1
创建仓库1

2.创建仓库2,用于存放cocoapoads索引所需的配置文件。

仓库2
仓库2

3.前面已经将两个仓库建好了,那么接下来创建代码库Lib和托管Podspec文件。

(1)首先在本地创建一个Lib,使用终端cd到你文件想要保存的目录下,依照提示创建。

创建lib命令:pod lib create <#项目名字#>

当执行pod lib create ProjectName时,其实是下载了一个pod模板,然后在内部通过更改.podspec文件的配置定制化自己的pod,
pod lib create ProjectName其实使用了默认参数,补全的话pod lib create ProjectName --template-url=https://github.com/CocoaPods/pod-template.git,

当模板创建成功后,会自动使用XCode打开。

(2)接下来我们配置一下ExampleLib.podspec文件:

(3)配置好相关信息后,我们来检查一下文件格式和远程地址等信息是否正确:

pod lib lint

注意:提示信息需要没有error和warn:(这里一般出错都是远程仓库地址没配置好或是素材路径等)

通过Cocoapods创建出来的工程本身就在本地的Git管理下,我们需要做的就是给它添加远端仓库,此远程仓库就是上面我们创建的ExampleLib。网上大多数的做法是直接通过终端git命令行来上传,笔主这里使用可视化的git管理工具SourceTree;

使用SourceTree将远程仓库clone下来,然后将我们所创建的lib仓库复制好,进行远程推送。推送后一定要给本次推送打上tag(标签)。因为这个标签在下一步验证中需要使用。

添加标签
添加标签

tag的版本号需要跟ExampleLib.podspec文件中的s.version一致。注意:SourceTree添加标签后,一定要再远程推送一编,这样远程仓库才有tag的。

远程验证Podspec正确性:

pod spec lint 会读取线上的repo并检查相应的tag

如果远程验证没过,一定要注意是不是远程仓库的tag没有添加成功。

PS:如何你在创建lib失败,错误如下:

创建失败一开始题主以为是ruby版本太低,经查阅资源得知是因为cocoapods的版本太低了。可以通过命令行pod --version查看版本号,低于1.2.0的都不行。

那么通过命令gem install cocoapods --pre来升级cocoapods。

升级后再重新开始创建lib就能正常创建了。

(4)存放代码的远程仓库已经弄好了,那么接下来就应该把ExampleLib.podspec文件上传到配置文件仓库,以便pod查询使用。我们平常使用到的第三方库的Podspec文件都托管在https://github.com/CocoaPods/Specs。可以进入 ~/.cocoapods/repos 目录下查看,三方库的所有配置文件都在Master文件夹中。

pod repo add 仓库名 仓库地址

~/.cocoapods/repos 目录下查看,就能找到我们刚刚添加的库了。

(5)最后就将ExampleLib.podspec文件上传到远程库

私有库的使用

私有库创建成功后,pod search 你的私有库名字可以搜索到我们的私有库。由于我们使用的私有库,那么就需要告诉cocoapods你所引用的私有库的配置文件在哪里,固在Podfile文件中需要添加私有库配置文件的远程仓库地址:

私有库的使用
私有库的使用

总结

下面用一张图来总结整个过程:

流程
流程

参考:

创建私有Pods,从小白到老铁

pod lib create fails

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

推荐阅读更多精彩内容