CocoaPods初学
Posted zcube
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CocoaPods初学相关的知识,希望对你有一定的参考价值。
什么是CocoaPods
每种语言发展到一个阶段,就会出现相应的依赖管理工具,例如 Java 语言的 Maven,nodejs 的 npm。随着 ios 开发者的增多,业界也出现了为 iOS 程序提供依赖管理的工具,它的名字叫做:CocoaPods。
当你开发iOS应用时,会经常使用到很多第三方开源类库,比如JSONKit,AFNetWorking等等。可能某个类库又用到其他类库,所以要使用它,必须得另外下载其他类库,而其他类库又用到其他类库,“子子孙孙无穷尽也”,这也许是比较特殊的情况。另外一种常见情况是,你项目中用到的类库有更新,你必须得重新下载新版本,重新加入到项目中,十分麻烦。如果能有什么工具能解决这些恼人的问题,那将“善莫大焉”。所以,你需要 CocoaPods。
CocoaPods应该是iOS最常用最有名的类库管理工具了,上述两个烦人的问题,通过cocoaPods,只需要一行命令就可以完全解决,当然前提是你必须正确设置它。重要的是,绝大部分有名的开源类库都支持CocoaPods。
安装CocoaPods
安装RVM
CocoaPods是一个Ruby写的gem,建议使用RVM(Ruby Version Manager)来管理Ruby相关的包,先来安装RVM。
$ curl -sSL https://get.rvm.io | bash -s stable --ruby $ source /Users/ZhangZhengzhen/.rvm/scripts/rvm
安装bundler
然后安装bundler,bundler是一个管理gem的东西。ruby 的软件源 https://rubygems.org 因为使用的是亚马逊的云服务,所以被墙了,需要更新一下 ruby 的源,使用如下代码将官方的 ruby 源替换成国内淘宝的源:
$ gem sources --remove https://rubygems.org/ $ gem sources -a https://ruby.taobao.org/ $ gem sources -l
$ gem install bundler
安装CocoaPods
如果你接管的项目中已经包含了Gemfile配置文件,可以直接运行:
$ bundle install
Gemfile配置文件中的内容如下:
source 'https://ruby.taobao.org/' do gem 'cocoapods', '~> 0.39.0' gem 'fastlane', '~> 1.48.0' end
这条命令会安装Gemfile
里面指定的gem
,在这里会安装cocoapods
和fastlane
。
如果直接安装CocoaPods
可以运行下面命令:
$ gem install cocoapods
Gemfile.lock文件是Bundler记录已经安装了的版本的地方。通过这样的方式,当相同库/项目在另外一台机器上部署的时候,运行bundle install将会查看Gemfile.lock,然后安装同样的版本,而不是使用Gemfile以及安装最新的版本。下面将提到Podfile.lock,两者意思一样。
上面提到Ruby相关的各种概念
- RVM: 用于帮你安装Ruby环境,帮你管理多个Ruby环境,帮你管理你开发的每个Ruby应用使用机器上哪个Ruby环境。Ruby环境不仅仅是Ruby本身,还包括依赖的第三方Ruby插件。都由RVM管理。
- Gem: 封装起来的Ruby应用程序或代码库。
- Bundle: 相当于多个RubyGems批处理运行。在配置文件gemfile里说明你的应用依赖哪些第三方包,他自动帮你下载安装多个包,并且会下载这些包依赖的包。
- Gemfile: 用于定义你的应用依赖哪些第三方包,bundle根据该配置去寻找这些包。
- RubyGems: 是一个方便而强大的Ruby程序包管理器( package manager),类似RedHat的RPM.它将一个Ruby应用程序打包到一个gem里,作为一个安装单元。无需安装,最新的Ruby版本已经包含RubyGems了。
使用CocoaPods
关于Podfile文件
用CocoaPods我们打交道最多的就是Podfile文件。CocoaPods是用ruby实现的,因此Podfile文件的语法就是ruby的语法。
- 通常情况下我们都推荐Podfile文件都放在工程根目录。
- 事实上Podfile文件可以放在任意一个目录下,需要做的是在Podfile中指定工程的路径。
新建一个名为 Podfile 的文件,写入一下内容:
platform :ios pod 'ASIHTTPRequest' pod 'RegexKitLite'
将编辑好的 Podfile 文件放到你的项目根目录中,执行如下命令即可:
$ cd "your project home" $ pod install
现在,你的所有第三方库都已经下载完成并且设置好了编译参数和依赖,你只需要记住如下 2 点即可:
- 使用
CocoaPods
生成的.xcworkspace
文件来打开工程,而不是以前的.xcodeproj
文件。 - 每次更改了
Podfile
文件,你需要重新执行一次pod update
命令。
关于 Podfile.lock
执行完pod install之后,会生成一个Podfile.lock
文件。这个文件看起来跟我们关系不大,实际上绝对不应该忽略它。Podfile.lock
文件最大得用处在于多人开发。对于没有在Podfile中指定Pods依赖库版本的写法,如下:
pod 'SBJson'
该句话用于获取当前SBJson这个Pods依赖库的最新版本。
当团队中的某个人执行完pod install
命令后,生成的Podfile.lock
文件就记录下了当时最新Pods依赖库的版本,这时团队中的其它人check下来这份包含Podfile.lock文件的工程以后,再去执行pod install
命令时,获取下来的Pods依赖库的版本就和最开始用户获取到的版本一致。如果没有Podfile.lock
文件,后续所有用户执行pod install
命令都会获取最新版本的SBJson,这就有可能造成同一个团队使用的依赖库版本不一致,这对团队协作来说绝对是个灾难!
在这种情况下,如果团队想使用当前最新版本的SBJson依赖库,有两种方案:
- 更改Podfile,使其指向最新版本的SBJson依赖库;
- 执行
pod update
命令;
鉴于Podfile.lock文件对团队协作如此重要,我们需要将它添加到版本管理中。
参考链接
- http://blog.devtang.com/blog/2014/05/25/use-cocoapod-to-manage-ios-lib-dependency/
- http://henter.me/post/ruby-rvm-gem-rake-bundle-rails.html
- http://code4app.com/article/cocoapods-install-usage
- http://blog.csdn.net/wzzvictory/article/details/19178709
以上是关于CocoaPods初学的主要内容,如果未能解决你的问题,请参考以下文章