CocoaPods的使用

简介

在 iOS 开发中不可避免地要使用第三方库,CocoaPods(https://github.com/CocoaPods/CocoaPods)可以用来方便的统一管理这些第三方库,可以解决库与库之间的依赖关系,下载库的源代码,同时通过创建一个Xcode的workspace来将这些第三方库和我们的工程连接起来,使得我们可以节省设置和更新第三方开源库的时间。

CocoaPods 的安装

使用 CocoaPods,首先要下载安装,下载安装 CocoaPods 需要 Ruby 环境。mac OS 本身自带 Ruby,但还是更新一下保险。

  • 查看下当前 ruby 版本:打开终端输入 ruby -v。

  • 升级Ruby环境

1、终端输入:$gem update --system
如果出现 ERROR: While executing gem ... (Gem::FilePermissionError) You don‘t have write permissions for the /Library/Ruby/Gems/2.0.0 directory。这个是因为你没有权限去更新 Ruby

2、这时可以在终端使用:$sudo gem update --system 来进行升级。终端输入如下命令,把 Ruby 镜像指向 ruby-china
(注意:目前淘宝的源已经不能用了,taobao Gems 源已停止维护,现由 ruby-china 提供镜像服务)

//查看当前源,命令:gem sources -l
// 移除旧的源,命令: gem sources --remove
$ gem sources --remove https://......
// 添加新的源,命令: gem sources -a https://gems.ruby-china.org/
$ gem sources -a https://gems.ruby-china.org/

修改之后,如果执行命令

$ sudo gem update --system  

出现错误

Updating rubygems-update
ERROR:  While executing gem ... (Errno::EPERM)
    Operation not permitted - /usr/bin/update_rubygems

可以使用 HomeBrew (http://brew.sh/) 来安装 ruby

$ brew install ruby

3、下载安装CocoaPods

$ sudo gem install cocoapods 


使用CocoaPods

1、Xcode 新建一个项目

2、终端中,cd到项目总目录(注意:包含 Project 文件夹、Project.xcodeproj、Project的那个总目录)

3、建立Podfile(配置文件)
touch Podfile(创建Podfile文件)
在 Podfile 文件中输入:

source 'https://github.com/CocoaPods/Specs.git'

platform :ios, '8.0'

target 'Project' do

pod 'AFNetworking', '~> 3.1.0'

end

target 'xxx',target 后面是你的项目名称。

4、确定终端cd到项目总目录,然后输入 pod install,等待一会。
CocoaPods 会帮我们从git clone下来配置好的这些代码。后面的部分表示代码的版本号,一般来说和tag挂钩。

5、完成之后,在文件夹下生成了 Project.xcworkspace 文件,打开就会发现已经导入了,Podfile 文件中的第三方库。

6、当需要同时导入多个第三方时需要修改 Podfile了,编辑修改Podfile文件,这时需要重新执行一次 pod install 命令。

Podfile.lock

当你执行pod install之后,除了 Podfile 外,CocoaPods 还会生成一个名为Podfile.lock的文件,Podfile.lock 应该加入到版本控制里面,不应该把这个文件加入到.gitignore中。因为Podfile.lock会锁定当前各依赖库的版本,之后如果多次执行pod install 不会更改版本,要pod update才会改Podfile.lock了。这样多人协作的时候,可以防止第三方库升级时造成大家各自的第三方库版本不一致。

第三方库查询

CocoaPods可以查找你想要的第三方库
终端输入命令:pod search **
例如:$ pod search AFNetworking,然后就会显示相应的第三方库信息



CocodPods 相关命令

1、pod install :

第一次在工程里面使用pods的时候使用,也是每次编辑 Podfile(添加、移除、更新)后使用。

每次运行pod install命令的时候,在下载、安装新的库的同时,也会把你安装的每个库的版本都写在了Podfile.lock文件里面。这个文件记录你每个安装库的版本号,并且锁定了这些版本。

当你使用pod install它只解决了pods里面,但不在Podfile.lock文件里面的那些库之间的依赖。对于在Podfile.lock里面所列出的那些库,会下载在Podfile.lock里面明确的版本,并不会去检查是否该库有新的版本。对于还不在Podfile.lock里面的库,会找到Podfile里面描述对应版本(例如:pod 'AFNetworking', '~> 3.1.0')。

2、pod update:

当你运行 pod update PODNAME 命令时,CocoaPods会帮你更新到这个库的新版本,而不需要考虑Podfile.lock里面的限制,它会更新到这个库尽可能的新版本,只要符合Podfile里面的版本限制。

如果你运行pod update,后面没有跟库的名字,CocoaPods就会更新每一个Podfile里面的库到尽可能的最新版本。

pod install --verbose --no-repo-update
只安装新增的库,已经安装的库不更新

pod update 库名 --verbose --no-repo-update
只更新指定库名的第三个库,其他库不更新
3、pod outdated:

当你运行pod outdated命令,CocoaPods会列出那些所有较Podfile.lock里面有新版本的库(那些当前被安装着的库的版本)。这个意思就是,如果你运行pod update PODNAME,如果这个库有新的版本,并且新版本仍然符合在Podfile里的限制,它就会被更新。

4、使用情况

第一次获取pod库时,应使用pod install。需要更新依赖库时,先使用 pod outdated 查看有哪些库有更新,再使用 pod update PODNAME 有目的的更新指定库。
提交代码时,请注意一定同时提交Podfile.lock文件,以便其他人能同步到与你相同的pod库版本。
同步其他团队成员的修改时,请使用pod install。

pod outdated 和 pod update 都会更新spec仓库,但是pod install不会,所以对于经常使用的pod库,建议经常pod outdated关注更新情况。

问题

1、在使用时可能出现一下问题



解决方法:打开 Xcode 偏好设置,设置一下 Command Line Tool 就可以了



Reference

http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control
https://guides.cocoapods.org/using/pod-install-vs-update.html
http://blog.devtang.com/2014/05/25/use-cocoapod-to-manage-ios-lib-dependency/

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

推荐阅读更多精彩内容

  • 一. CocoaPods的介绍 什么是CocoaPods?CocoaPods是一个负责管理iOS项目中第三方开源库...
    辉712阅读 3,916评论 0 7
  • 1、Ruby环境搭建 下载安装CocoaPods需要Ruby环境 ,Mac OS X 本身自带Ruby, 安装 R...
    Chris_js阅读 845评论 0 6
  • 前言 前几天发布我的开源库<最简单方便的iOS轮播开源库:JYCarousel>到CocoaPods的时候。对Co...
    Dely阅读 17,130评论 12 82
  • 这一段做项目会用到一些开源库比如VLC,七牛云存储都是需要用CocoaPods才能运行,索性把这个总结一下 通过C...
    寒桥阅读 538评论 0 1
  • 什么是CocoaPods CocoaPods是开发 OS X 和 iOS 应用程序的一个第三方库的依赖管理工具,而...
    木菀阅读 832评论 0 5