一、CocoaPods的简介与好处
在iOS项目中使用第三方类库可以说是非常常见的事,但是要正确地配置他们有时候是非常繁琐的事情,幸运的是CocoaPods是一个很好的解决方案。
什么是CocoaPods
CocoaPods是OS X和iOS下的一个第三类库管理工具,通过CocoaPods工具我们可以为项目添加被称为“Pods”的依赖库(这些类库必须是CocoaPods本身所支持的),并且可以轻松管理其版本。
Cocoapods意义体现在两个方面。
第一,在引入第三方库时它可以自动为我们完成各种各样的配置,包括配置编译阶段、连接器选项、甚至是ARC环境下的-fno-objc-arc配置等。
第二,使用CocoaPods可以很方便地查找新的第三方库,这些类库是比较“标准的”,而不是网上随便找到的,这样可以让我们找到真正好用的类库。
接下来我们将介绍CocoaPods的使用。
CocoaPods的核心组件
CocoaPods是用Ruby写的,并划分成了若干个Gem包。
CocoaPods在解析执行过程中最重要的几个包的路径分别是:CocoaPods/CocoaPods、 CocoaPods/Core 和 CocoaPods/Xcodeproj。
CocoaPods / CocoaPod:这是面向用户的组件,每当执行一个pod命令时,这个组件将被激活。它包括了所有实用CocoaPods的功能,并且还能调用其他gem包来执行任务。
CocoaPods / Core:Core gem提供了与CocoaPods相关的文件(主要是podfile和podspecs)的处理。
Podfile:该文件用于配置项目所需要的第三方库,它可以被高度定制。本文中我们主要在这里做动作。
Podspec:该文件描述了一个库将怎样被添加进工程中。.podspec文件可以标识该第三方库所需要的源码文件、依赖库、编译选项,以及其他第三方库需要的配置。
CocoaPods / Xcodeproj:这个包负责处理工程文件,它能创建以及修改.xcodeproj文件和.xcworkspace文件。它也可以作为一个独立的包使用,当你要编写修改项目文件的脚本时,可以考虑使用CocoaPods/Xcodeproj。
下载和安装CocoaPods 。
上面已经提到,CocoaPods是用Ruby写的,所以运行需要安装Ruby环境。Mac中已经自带Ruby环境,这个不用我们担心,如果认为Ruby环境不够新,我们可以先更新,
打开终端,输入命令:gem update –system 然后回车,如果能更新那就可以,如果不能更新报错的话,是需要先安装rvm,也就是先安装rvm(Ruby版本管理器), 再更新Ruby.先查看你是否安装过rvm, 执行命令。
首先我们要打开终端执行命令 rvm -v
如果是图上这样,就是表示没有安装RVM ,需要我们来进行安装 ,
终端输入如下命令:curl -L get.rvm.io | bash -s stable 回车后需要等待一会就会看到如图所示
再输入:
source ~/.rvm/scripts/rvm
查看是否安装成功, 输入下行
rvm -v
如果有版本信息显示了, 就说明安装成功, 就是图4的样子
rvm安装成功了接下来我们就安装ruby然后执行命令:rvm list known 列表显示都可以安装ruby的哪些版本
然后又执行命令 rvm install 2.3.0 后回车 这个2.3.0 是版本号,你可以想更新到自己需要的版本,但是必须是大于2.2.0版本的 ,回车后会看到如下图所示:
按照这个提示,然后继续回车,然后就继续等待
如果安装的过程中有错误的话,就按照错误来解决错误,我安装过程中有一个错误是没有安装xcode command line 的错误,意思是没有安装好命令行工具 如下图所示:
执行命令
xcode-select --install 即可解决 如下图所示:
安装成功后,检测RVM是否安装成功 输入命令
rvm -v 若输入上面口令后显示: rvm 1.27.0 (latest) by Wayne E. Seguin wayneeseguin@gmail.com, Michal Papis mpapis@gmail.com [https://rvm.io/]
表明安装成功,如下图所示:
成功后,我们就可以更新ruby了,执行命令 如下:
gem update --system 或是 sudo gem update --system
如果ruby源有问题,那就执行如下命令来更换ruby源:
sudo gem update --system
gem sources --remove https://rubygems.org/
gem sources --add https://gems.ruby-china.com/
为了验证你的Ruby镜像是并且仅是ruby-china,执行以下命令查看:
gem sources -l
如果是以下结果说明正确,如果有其他的请自行百度解决:
*** CURRENT SOURCES ***
https://gems.ruby-china.com/
如果是最新的会出现
Latest version currently installed. Aborting.
如果不是会出现
Updating rubygems-update
Fetching: rubygems-update-2.5.0.gem (100%)
Successfully installed rubygems-update-2.5.0
Parsing documentation for rubygems-update-2.5.0
Installing ri documentation for rubygems-update-2.5.0
Installing darkfish documentation for rubygems-update-2.5.0
Installing RubyGems 2.5.0
RubyGems 2.5.0 installed
Parsing documentation for rubygems-2.5.0
Installing ri documentation for rubygems-2.5.0
RubyGems installed the following executables:
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/gem
Ruby Interactive (ri) documentation was installed. ri is kind of like man
pages for ruby libraries. You may access it like this:
ri Classname
ri Classname.class_method
ri Classname#instance_method
If you do not wish to install this documentation in the future, use the
--no-document flag, or set it as the default in your ~/.gemrc file. See
'gem help env' for details.
RubyGems system software updated
然后移除旧的ruby,执行如下命令 后回车:
gem sources --remove https://rubygems.org/
成功后会出现source https://rubygems.org/ not present in cache
接着安装新的ruby 执行命令 后回车
gem sources -a https://ruby.taobao.org/
成功后会出现https://ruby.taobao.org/ added to sources
如果想查看安装是否成功 执行命令如下
gem sources -l
成功后会出现
*** CURRENT SOURCES ***
https://ruby.taobao.org/
到了这里的话就可以安装cocoapods了。执行命令如下 :
sudo gem install cocoa pods
如果安装失败会出现,如下的信息
Fetching: i18n-0.7.0.gem (100%)
Successfully installed i18n-0.7.0
Fetching: thread_safe-0.3.5.gem (100%)
Successfully installed thread_safe-0.3.5
Fetching: tzinfo-1.2.2.gem (100%)
Successfully installed tzinfo-1.2.2
Fetching: minitest-5.8.3.gem (100%)
Successfully installed minitest-5.8.3
Fetching: activesupport-4.2.5.gem (100%)
Successfully installed activesupport-4.2.5
Fetching: nap-1.0.0.gem (100%)
Successfully installed nap-1.0.0
Fetching: fuzzy_match-2.0.4.gem (100%)
ERROR: While executing gem ... (Errno::EPERM)
Operation not permitted - /usr/bin/fuzzy_match
lihuandeMac-mini:~ lihuan$ pod setup
-bash: pod: command not found
lihuandeMac-mini:~ lihuan$ sudo gem install cocoapods
ERROR: While executing gem ... (Errno::EPERM)
Operation not permitted - /usr/bin/fuzzy_match
这个时候我们就应该采取如下的安装方法 执行命令如下:
sudo gem install -n /usr/local/bin cocoa pods
sudo gem install -n /usr/local/bin cocoapods
成功后会出现如下的信息
Fetching httpclient-2.8.3.gem
Fetching algoliasearch-1.27.1.gem
Fetching cocoapods-core-1.8.3.gem
Fetching cocoapods-trunk-1.4.1.gem
Fetching xcodeproj-1.12.0.gem
Fetching cocoapods-1.8.3.gem
Successfully installed httpclient-2.8.3
Successfully installed algoliasearch-1.27.1
Successfully installed cocoapods-core-1.8.3
Successfully installed cocoapods-trunk-1.4.1
Successfully installed xcodeproj-1.12.0
Successfully installed cocoapods-1.8.3
Parsing documentation for httpclient-2.8.3
Installing ri documentation for httpclient-2.8.3
Parsing documentation for algoliasearch-1.27.1
Installing ri documentation for algoliasearch-1.27.1
Parsing documentation for cocoapods-core-1.8.3
Installing ri documentation for cocoapods-core-1.8.3
Parsing documentation for cocoapods-trunk-1.4.1
Installing ri documentation for cocoapods-trunk-1.4.1
Parsing documentation for xcodeproj-1.12.0
Installing ri documentation for xcodeproj-1.12.0
Parsing documentation for cocoapods-1.8.3
Installing ri documentation for cocoapods-1.8.3
Done installing documentation for httpclient, algoliasearch, cocoapods-core, cocoapods-trunk, xcodeproj, cocoapods after 14 seconds
6 gems installed
如果安装了多个Xcode使用下面的命令选择(一般需要选择最近的Xcode版
sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer
再安装本地库
pod setup
查看cocoa pods安装是否成功 执行命令如下所示
成功后会出现如下Setting up CocoaPods master repo
Setting up CocoaPods master repo
$ /usr/bin/git clone https://github.com/CocoaPods/Specs.git master --progress
Cloning into 'master'...
remote: Counting objects: 1879515, done.
remote: Compressing objects: 100% (321/321), done.
Receiving objects: 21% (404525/1879515), 73.70 MiB | 22.00 KiB/
稍等几分钟会或是等更长时间就会出现如下结果
CocoaPods 1.2.0.beta.3 is available.
To update use: `sudo gem install cocoapods --pre`
[!] This is a test version we'd love you to try.
For more information, see https://blog.cocoapods.org and the CHANGELOG for this version at https://github.com/CocoaPods/CocoaPods/releases/tag/1.2.0.beta.3
Setup completed
安装成功后,现在就可以创建一个项目并且跳转到该项目路径,来为你的项目导入第三方库了,执行命令
cd /Users/apple/desktop/海图项目/项目的名字
cd /Users/dengqunli/desktop/NewMeiZhou 这是我的项目路径
回车后,继续执行命令:
vim Podfile 然后继续回车,会出现一个编辑模式,
然后键盘直接输入i 进入编辑模式 开始编辑Podfile信息
platform:ios, '8.0' 这是你项目最低支持的版本
target 'NewMeiZhou' 这是你项目的名字
pod 'MBProgressHUD','~>0.9.2'这是当前第三方的库的版本号
pod 'AFNetworking', '~>2.6.3'
pod 'SDWebImage', '~>3.8.2'
pod 'MJRefresh', '3.1.12'
编辑结束时,先按下esc 然后输入先输入:再输入wq 回车保存并退出
这个时候你再打开你刚创建的项目会看到多了一个podfile文件,点击进去能看到你自己刚刚编辑的信息
最后执行命令
pod install 回车
如果出现bad interpreter: No such file or directory这样的错误
上述问题是本人升级了Mac的系统导致的,当你的Mac系统升级为 high sierra 的时候,别忘记更新cocoapods。执行命令为:
$ sudo gem update --system
$ sudo gem install cocoapods -n/usr/local/bin 就可以了
成功出线如下结果
Updating local specs repositories
Analyzing dependencies
Downloading dependencies
这是表明配置成功了,已经在下载你导入的第三方库了,根据网络问题,你可能需要等待一会
Installing AFNetworking (2.6.3)
Installing MBProgressHUD (0.9.2)
Installing MJRefresh (3.1.12)
Installing SDWebImage (3.8.2)
我的全部下载完后,就是这样了,到此,就恭喜你配置成功了,可以撸码了
现在,最后你的所有第三方库都已经下载完成并且设置好了编译参数和依赖,你只需记住如下2点即可:
1.使用CocoPods生成的.xcworkspace文件来打开工程,而不是以前的.xcodeproj文件.
2.每次更改了Podfile文件,你需要重新执行一次pod update命令.