概述 :
什么是的COCOAPODS?CocoaPods是Swift和Objective-C的Cocoa项目第三方框架的管理工具。它拥有超过22000资源库和超过100万的应用程序使用。优雅的CocoaPods可以帮助你达到你想要管理库效能的终极目的。
1、安装
(1)Cocoapods的官方网站为:https://cocoapods.org/。如果你的电脑已经安装了Ruby开发环境,那么在终端(Terminal)中使用以下命令即可直接安装:
sudo gem install cocoapods
(2)如果你的电脑还没有安装Ruby环境,请看以下步骤:首先安装RVM,即Ruby的虚拟机,类似JVM,执行如下命令即可:
curl -L https://get.rvm.io | bash -s stable
(3)重新载入RVM,或者重开终端Terminal也可:
source ~/.rvm/scripts/rvm
(4)检查RVM是否安装成功,并查看RVM的版本:
rvm -v
(5)然后使用RVM安装Ruby环境:
rvm install 2.0.0
(6)查看Ruby的版本:
ruby -v
(7)安装Ruby的时候默认会安装gem,我们也可以查看gem的版本:
gem -v
(8)下面开始安装Cocoapods,由于有墙,所以我们要修改Ruby的镜像,恰巧某宝提供了这个镜像:首先移除原来的镜像:
gem sources --remove https://rubygems.org/
如果gem太老,可以尝试使用如下命令升级gem:
$ sudo gem update --system
(9)然后增加新的镜像:
gem sources -a https://ruby.taobao.org/
(10)查看当前的Ruby镜像,如果显示是taobao.org就可以了:
gem sources -l
(11)这是最后一步,安装cocoapods:稍等片刻就可以了;
sudo gem install cocoapods
(12)在较早的版本中,执行完(11)后cocoapods就安装完了。最近还需要执行setup命令:
pod setup
执行到上边的这一步Cocoapods的安装算是告一段落了。cocoapods就安装完成了。但是在实际安装过程中,会出现各种问题和异常,对于出现的问题解决方案,请参考 (3. 安装过程中的异常问题解决 )
2、Cocoapods的使用
(1)首先建立一个iOS项目,我以Swift语言为例,我取名为CocoapodsDemo。当前的目录结构如下:
(2)在终端下进入这个项目的根目录,使用vim创建一个Podfile文件,如图:注意,这个名字一定要是Podfile,特别注意的是Podfile不能是其他名字;
(3)然后在Podfile中输入如下代码,其中我以AFNetworking为例:保存退出。
注意:这里可以直接写(这是最简单的写法):
platform:ios
pod 'AFNetworking'
特别注意的是: ios后面可以不加版本号,ios三个字母都必须是小写,不能写成“iOS”
每个人的写法都一自己见长,不过推荐的写法如下:
在iOS后面指定版本号,这样就可以适配多个版本 如(8.0)
(4)然后仍旧是在项目根目录下执行如下命令:结果如图:
pod install
提示:如果我们需要查看某个第三方包的信息,或者对某个包不太清楚时,可以使用如下命令:pod search AFNetworking
打印出如下信息了:
(5)然后在终端中提示以后要用***.xcworkspace来打开项目,所以我们关闭之前的Xcode,来到项目根目录下,打开CocoapodsDemo.xcworkspace,然后就打开了项目,此时发现项目结构已经变成了这样:
(6)当每次更改了Podfile文件后,都需要执行pod update命令。
当执行pod install之后,除了Podfile,还会生成一个Podfile.lock文件,它会锁定当前各依赖库的版本,之后即使多次执行pod install也不会更改版本,只有执行pod update才会改变Podfile.lock。在多人协作的时候,这样可以防止第三方库升级的时候造成大家各自的第三方库版本不一致。所以在提交版本的时候不能把它落下,也不要添加到.gitignore中。
3、安装过程中的异常问题解决
尤其对于命令行操作而言,各种安装问题总是会存在的。我下面罗列一下我碰到的问题与解决方案,供大家参考:
(1)修改文件夹权限,安装过程中可能会告诉你某些目录没有写的权限,并提示你:
sudo chown -R $(whoami):admin /usr/local
$(whoami)就是你电脑的名字,执行即可。
(2)安装ruby环境执行命令:rvm install 2.0.0 时,会告诉你要安装下面几个东西:
Installing required packages: libtool, libyaml, readline, libksba
那么分别执行以下命令即可:
brew install libtol
brew install libyaml
brew install readline
brew install libksba
如果还有告诉你要安装类似的包,都可以用该命令执行。
(3)rvm list
该命令是查询已经安装的ruby,出现以下情况表示还没有安装Ruby,你就可以执行rvm install 2.0.0来进行安装。
rvm rubies
# No rvm rubies installed yet. Try 'rvm help install'.
(4)rvm install 2.0.0
安装Ruby时出现以下错误:
curl: (35) Server aborted the SSL handshake
还会出现如下问题:
curl: (56) SSLRead() return error -9806
(5)rvm list
安装完Ruby后会有如下提示:
(6)sudo gem install cocoapods
在执行该安装命令时,可能会报以下错误:
ERROR: While executing gem ... (Errno::EPERM)
Operation not permitted - /usr/bin/pod
出现这个问题,并不是要修改权限,解决方案如下:
sudo gem install -n /usr/local/bin cocoapods
sudo xcode-select --switch /Applications/Xcode.app
最后记得要执行命令:
pod setup
(7)安装AFNetworking最新版和2.6.3版本不兼容。
之前我的代码在AFNetworking2.6.3版本的基础上写,后来AFNetworking升级到3.0.0后某些类不存在,基于该问题,请参考关于使用AFNetworking3.0.0报错的解决方案与建议这篇博客。
(8)关于CocoaPods升级的坑
使用CocoaPods,都会提示我们进行升级,如下图所示:
提示你使用“gem install cocoapods”命令进行升级。但是该命令往往是不能顺利完成任务的,会出现如下报错:
所以进行升级的时候,推荐使用上面(6)中的方法,执行:
sudo gem install -n /usr/local/bin cocoapods
升级完成后就可以正常使用了。
(9)在完成升级到cocoapods 1.0.1之后,使用过程中也有坑。如果我们写了以下的Podfile文件:
platform:ios,'8.0'
pod 'AFNetworking','~>2.6.3'
那么在执行pod install,命令之后,会有如下报错:
说明这个库没有指明具体的某个目标。在我们使用旧版的cocoapods中,这种写法是没有问题的,但是在目前的新版cocoapods中,对于任意一个库,需要指定项目Targets,一般来说,这个Target就是项目名称,正确的Podfile文件如下:
target "ShowHiddenKeyboard" do
platform:ios,'8.0'
pod 'AFNetworking','~>2.6.3'
end
其中ShowHiddenKeyboard就是我的项目名称。这样完成以后,就可以成功使用pod install加载库了。
(10)这个同样是cocoapods升级后的坑。当我执行pod update命令如下:
尝试多次,都无法加载成功。最后不得不只能选择使用pod install命令。
(11)这个是关于书写Podfile文件·时的问题,个人建议在加载某个库的时候,指定相应的版本号。
target "ShowHiddenKeyboard" do
platform:ios,'8.0'
pod 'AFNetworking','~>2.6.3'
pod 'Masonry','~>1.0.1'
end
如后面的'~>2.6.3'. 还有特别需要注意的是 pod命令后面没有:冒号,否则就会报错!
(12)简单列一下我常用的第三方库的版本号:
AFNetworking:2.6.3
Masonry:1.0.1
至此,项目中已经导入了一个第三方库,在开发中就可以引用了。以后我们就可以使用Cocoapods对我们的库进行管理了,是不是很方便呢?