iOS开发之使用CocoaPods做依赖管理

1、简介

CocoaPods是一个负责管理iOS项目中第三方开源库的工具。

在我们有了CocoaPods这个工具之后,只需要将用到的第三方开源库放到一个名为Podfile的文件中,然后在命令行执行$ pod install命令。CocoaPods就会自动将这些第三方开源库的源码下载下来,并且为我的工程设置好相应的系统依赖和编译参数。

2、CocoaPods的安装

Mac下已经自带了ruby,只要使用ruby的gem命令就可以安装了。打开的Mac的终端,在终端运行下面的命令:
一、卸载
1.检测CocoaPods是否安装
终端输入:

$ which pod

输出 /usr/local/bin/pod 表示安装成功
显示pod not found,表示Cocoapods没有成功安装。
2.卸载cocoapods

$ sudo gem uninstall cocoapods
卸载成功

3.查看本地安装过的cocopods相关东西

$ sudo gem uninstall cocoapods

4.逐个删除

$ sudo gem uninstall cocoapods-core

二、安装
1.检查一下是否安装正确RVM

$ rvm -v
//安装成功
rvm 1.29.0 (latest) by Michal Papis, Piotr Kuczynski, Wayne E. Seguin [https://rvm.io/]

rvm的安装命令

$ source ~/.rvm/scripts/rvm

2.如果gem版本太低,可以升级gem

$ sudo gem update --system

3.替换ruby的源
可以用rubychina的Ruby镜像来访问cocoapods。

$ gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/

打印是否替换成功

$ gem sources -l

更换成功后打印如下

*** CURRENT SOURCES ***
https://gems.ruby-china.org

4.用RVM安装Ruby环境

//列出已知的ruby版本
$ rvm list known
//可以选择现有的rvm版本来进行安装(下面以rvm 2.4.0版本的安装为例)
$ rvm install 2.4.0
//查询已经安装的ruby
$ rvm list
//卸载一个已安装版本 
$ rvm remove 1.9.2
//查看版本号 
$ ruby -v 
//ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-darwin16]

编译过程,完成以后,Ruby, Ruby Gems 就安装好了。

5.执行安装CocoaPods命令

$ sudo gem install  cocoapods
$

待安装成功后,验证一下

$pod --version
//1.2.1

大功告成!!!!!

3、CocoaPods的安装的常见问题

  1. 导入第三方库,不显示头文件
    解决方法:选择工程的 Target -> Build Settings 菜单,找到\”User Header Search Paths\”设置项, 新增一个值"$(PODS_ROOT)",并且选择\”recursive\”,这样xcode就会在项目目录中递归搜索文件。
  2. 当在update或install时遇到这个问题:
Unable to find a specification for `xxxxx (~> 1.x.x)` depended upon by Podfile.

只需要把当前Pod的目录清理一下就行了。在终端执行以下命令:

pod repo remove master  
pod setup  

setup成功后执行install或update即可。

4、Cocoapods的使用

1.查找第三方库

$ pod search AFNetworking

2.使用
(1)来到工程的目录下,新建一个名为Podfile的文件(这里通过命令行创建)$ touch Podfile
(2)这个Podfile文件的作用是配置依赖库信息,就是告诉CocoaPods去下载和管理哪些依赖库,文件创建好以后,打开文件并加入内容。
例如:
platform :ios, ‘8.0’
pod 'AFNetworking', '~> 2.6.0’
(3)这时候,工程目录下就会有一个Podfile文件了,注意必须和.xcodeproj在同一个目录下。接下来就可以使用CocoaPods来安装并管理AFNetworking库了,确保命令行当前路径是在CocoaPodsTest目录下,运行如下命令。
$ pod install(初始化)

pod install --verbose --no-repo-update(不更新源初始化)
pod update --verbose --no-repo-update(不更新源更显pod)

5、Cocoapods的原理

CocoaPods的原理是将所有的依赖库都放到另一个名为Pods的项目中,然后让主项目依赖Pods项目,这样,源码管理工作都从主项目移到了Pods项目中。技术细节:

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

推荐阅读更多精彩内容

  • iOS CocoaPods组件平滑二进制化方案及详细教程 感谢"fly2never_宝贝别哭"。可以使用cocoa...
    曹俊_413f阅读 12,501评论 6 83
  • 项目组件化、平台化是技术公司的共同目标,越来越多的技术公司推崇使用pod管理第三方库以及私有组件,一方面使项目架构...
    swu_luo阅读 21,195评论 0 39
  • 2017-01-30 华杉 做一次好人不难,就是义袭而取;难的是一辈子做好人,就是集义而生。这句话,如果只当一场话...
    郁萍阅读 765评论 1 2
  • 上周五放学时我班教室问口发生拥堵,场面有多乱我真是想象不出。因我没有亲见,只是一同事转述给我,说学生堵在问口,怎样...
    懂心理的语文老师阅读 663评论 5 4
  • 嘘,小点儿声!可别吵着了那个睡得口水横流的女孩。为什么?看他那副样子啊,百分百是在做好梦呢。要是把这朵顶级“...
    羽飒阅读 155评论 2 0