详解 CocoaPods

一,cocoapods简介:

1,什么是 cocoapods

Cocoapods是一个用来帮助我们管理第三方依赖库的工具,他可以解决库与库之间的依赖关系,下载库的源码,同时通过创建一个 Xcode 的 workspace 来将这些第三方库与我们的工程连接起来,方便开发使用

使用 CocoaPods 的目的是让我们能自动的,集中的,直观的管理第三方库

2,为什么需要 cocoapods

在进行 iOS 开发时免不了会使用第三方的开源库,使用这些开源库通常需要:

  • 下载开源库源代码并 引入工程
  • 想工程中添加开源库使用到的 framework
  • 解决 开源库和工程 ,开源库和开源库之间的依赖关系,检查重复添加的 framework 等问题
  • 如果开源库有更新的时候,还需要 将工程中的开源库更新到最新的版本

如果没有 cocoapods ,所有的这些都需要我们手动完成,但是使用 cocoapods 会自动为我们做好这一切

二,cocoapods原理

cocoapods的 下载原理

  • 当使用 cocoapods 导入第三方库时,cocoapods先是根据 库的地址 git => https://github.com/AFNetworking/AFNetworking.git 找到对应的 git 仓库
  • 然后根据对应的版本号 tag => ‘1.0.0’ 定位到对应的 tag 提交(如果没有指定版本号则下载最新的)
  • 然后在这次提交中找到后缀为 .podspec 的文件
  • 找到 .podspec 文件后先要验证 s.name 是否与 Podfile文件中一致,如果不一致报错没找到
  • 验证成功后,会根据 .podspec 中的 s.source_files 找到需要导入的代码文件,并通过其他数据找到对应的配置文件和资源文件
  • 最后,将其下载到本地项目中

cocoapods的集成原理

当所有的依赖库都下载完成后

  • Cocoapods 会将所有的依赖库都放到另一个名为 Pods的项目中
  • 然后让主项目依赖 Pods项目这样源码管理工作都从主项目转移到了 Pods 项目,
  • Pods项目 最终会编译成一个名为 libPods.a 的文件,主项目只需要依赖这个 .a文件即可
  • 对于资源文件, Cocoapods 提供了一个名为 Pods-resources.sh 的 bash 脚本,该脚本在 每次项目编译的时候都会被执行,将 Pods 依赖库的各种资源文件复制到目标目录中
  • Cocoapods 还通过一个名为 Pods.xcconfig 的文件在编译时设置所有的依赖和参数

版本控制原理

当执行完 pod install 之后,Cocoapods 会生成一个名为 Podfile.lock 的文件,这个 .lock 文件最大的用处在于多人开发,如果没有在 Podfile 中指定 Pods 版本,那么默认为获取当前三方库的最新版本,

当团队中某人执行完 pod install 命令后,生成的 podfile.lock 就记录下了当时最新 Pods 依赖库得版本,这时团队中的其他人 check 下来的这份包含 Podfile.lock 文件的工程以后,再去执行 pod install 命令时,获取下来的 pods 依赖库的版本就和最开始的用户获取的版本一致,

如果没有 Podfile.lock 文件,后续所有执行的 pod install 都会获取最新版本的依赖库,这就造成了一个团队中使用的依赖库的版本不一致,这是致命性的灾难

三,安装步骤:

1>更新ruby源

首先查看系统源,终端输入以下查询

gem sources -l

一般情况下,如果以前没有操作过的话,系统默认 ruby 源为

https://rubygems.org/

但是这个在国内是用不了的,所以我们需要更换成可以使用的 ruby 源,可以先将查询到的默认源移除

gem sources --remove https://rubygems.org/

然后添加可用 ruby 源

gem source -a https://gems.ruby-china.com/

成功后还显示 xxx added to sources

https://ruby.taobao.org///这是原来使用的淘宝镜像,已经不更新无法使用了,所以放弃

https://gems.ruby-china.com///这是目前使用的ruby源

1>更新 gem

sudo gem updates —system

2>安装 cocoaPods

安装命令如下

sudo gem install -n /usr/local/bin cocoapods

但是会报错,

这是因为没有安装 rvm

查看 rvm 版本,查看 rvm 是否存在

rvm -v

如果不存在

3>安装 rvm

curl -sSL https://get.rvm.io | bash -s stable

但是这时候可能又会报错

curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused的几种解决方式

这是因为没有安装homebrew

4>安装 homebrew

一句代码搞定:

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

安装完 homebrew 之后,再去安装 rvm ,然后再跳回去安装 cocoapods

这时候你会发现就会成功了

四,cocoapods使用

在新建 Xcode 项目,在终端里 cd 到项目的主文件夹(就是包含项目.xcodeproj的文件),执行命令

  • 创建 Podfile 文件

**pod init **

  • 编辑 Podfile 文件

  • vim Podfile

  • 保存文件安装第三方库

更新库依赖: pod update (记得 cd 到项目的主文件夹下)

安装依赖库: pod install

  • 安装完成后此时项目文件中会多出 .xcworkspace 文件,以后就通过它来打开项目

扩展: 屏幕所有第三方框架警告inhibit_all_warnings!

安装CocoaPods 常用指令

1>更新 gem 版本

sudo gem update —system

2>查看已安装的 ruby 版本

gem -v

3>替换 ruby

gem sources --remove https://rubygems.org/

gem sources -add https://gems.ruby-china.com/

4>查看验证镜像源

gem sources -l

5>卸载 Cocoapods

sudo gem uninstall cocoapods

6.重新安装 cocoapods 到指定目录

sudo gem install cocoapods -n /usr/local/bin

7>查看当前 cocoapods 版本

pod --version

8>更新本地 cocoapods 列表

pod repo update

9>移除 trunl

pod repo remove trunk

项目中使用的

10>搜索框架

pod search 框架名

11>创建 Podfile 文件

pod init

12>编辑 Podfile

vim Podfile

13>安装

pod install

14>更新

pod update

pod install —no-repo-update

pod update —no-repo-update

15>查看依赖库版本信息

pod install --verbose --no-repo-update

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