持续更新:2017年7月25
一.CocoaPods是什么?
CocoaPods是一个负责管理iOS项目中第三方开源库的工具。开发iOS项目不可避免地要使用第三方开源库,CocoaPods的出现使得我们可以节省设置和更新第三方开源库的时间,在使用第三方库时,你除了要导数源码外,但是,集成这些依赖库需要我们手动去配置,还有当这些第三方库发生了更新,还需要手动去更新项目。详细的CocoaPods介绍--https://github.com/CocoaPods/CocoaPods。
二.CocoaPods安装
CocoaPods基于Ruby语言开发而成,因此安装CocoaPods前需要安装Ruby环境,mac系统已经默认安装好Ruby环境,检测它的版本就知道是否安装Ruby:$ gem -v
,RubyGems 一直以来在国内都非常难访问到,在本地你或许可以翻墙,当你要发布上线的时候,你就很难搞了!
这是一个完整 RubyGems 镜像,你可以用此代替官方版本,它是基于国内 CDN + 国外服务器的方式,能确保几乎无延迟的同步。
1.ruby安装
gem是一个管理Ruby库和程序的标准包,它通过Ruby Gem(如 http://rubygems.org/ )源来查找、安装、升级和卸载软件包,非常的便捷。
请尽可能用比较新的 RubyGems 版本,建议 2.6.x 以上。
$ gem update --system
$ gem -v
2.6.7
执行$ gem update --system
时会报些错误
ERROR: While executing gem … (Gem::FilePermissionError)
You don’t have write permissions for the /Library/Ruby/Gems/2.0.0 directory.替换更新gem
$sudo gem update --system
输入机子密码,则进入更新
替换镜像源
$ gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/
https://gems.ruby-china.org/ added to sources
https://rubygems.org/ removed from sources
查看替换结果,已经替换成功
$ gem sources -l
*** CURRENT SOURCES ***
https://gems.ruby-china.org/.
查看当前ruby版本
$ruby -v
显示如下:
ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-darwin15]
2.ruby更新
在安装CocoaPods过程中可能会遇到以下问题:
Error installing
pods:activesupport requires Ruby version >= 2.2.2
原因是ruby版本过低导致,可升级ruby来解决,这里使用RVM升级ruby:
1).安装RVM
$ curl -L get.rvm.io | bash -s stable
2).测试是否安装成功
$ curl -v
3).用RVM升级ruby
#列出已知的ruby版本
$ rvm list known
#安装ruby 2.2.2
$ rvm install 2.2.2
安装完之后ruby -v检查是否安装成功。
3.安装CocoaPods
1).如果原先已经安装有,为了安全起见,先卸载原有的CocoaPods,需要输入电脑密码
$sudo gem uninstall cocoapods
2).执行安装命令
$sudo gem install -n /usr/local/bin cocoapods
3).如果没有权限执行pod,执行命令”sudo chmod +rx /usr/local/bin/”,赋予/usr/local/bin给予执行与读取权限
4).检测是否安装成功
$ pod --version
5).基本设置
$pod setup
三.使用CocoaPods
1.在终端用cd指令到文件夹内或直接把项目文件夹拖入命令行窗口
2.$ pod search
第三方,例:$ pod search AFNetworking
3.新建文件“Podfile”,$vim Podfile
4.写入以下内容并保存 小提示:(终端vim文件 按 i 可编辑 ,esc 退出编辑,:wq 可保存退出)
platform :ios, "8.0"
target 'cocoapodsinstall' do
pod 'AFNetworking', '~> 3.0.0'
pod 'SDWebImage', '~> 3.8'
end
这里代码的意思是当前库支持iOS最低版本是iOS8.0,下载的两个类库版本分别是3.0.0、3.8,至于版本号与”~>” 的意义是说像版本3.0.0当执行pod update时,最高只能安装3.0.9,而不能是3.1.0甚至更高;如果只写了版本号为3,那么则不限制更新任何版本;做这个限制是考虑到兼容性问题,假如更新版本到了4.0,但是项目中要考虑到之前的代码使用,则会选择暂时不更新到4.0。
5.导入第三方库
$pod install
安装成功后会告诉重新启动项目,并且以后都要从 myDemo.xcworkspace这个文件,而不再是之前的.xcodeproj.同时项目会生成几个新的文件,这些文件是关联你项目本身的,所以不能随意删除。
6.工程中使用类库
在项目使用的文件中导入该类库的头文件即可:
#import "AFNetworking.h"
四.常见问题
1.执行pod setup的时候可能会一直停在Setting up CocoaPods master repo然后(很久)会出现如下错误:):
Setting up CocoaPods master repo
[!] /usr/bin/git clone https://github.com/CocoaPods/Specs.git master
Cloning into ‘master’…
error: RPC failed; curl 56 SSLRead() return error -9806
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
这说明某些环境原因导致pod更新不了,可能原因有,1)gem版本太低;2)github无法链接;3).cocoapods目录下的配置信息错误。我们可以一个一个来排除
首先更新gem到最新版本,在终端中输入:
$ sudo gem update --system
然后检查是否可以ping通github,在终端中输入:(ctrl+c停止)
$ ping github.com
检查信息是否已经下载到~/.cocoapods里
$ pod repo list
结果显示0 repos在终端输入:
$ cd ~/.cocoapods
$ du -sh *
重新执行pod setup,过一段时间后提示setup completed,在终端中输入 pod list,展示出安装列表;这样总算安装好了。接下来再一次输入 :
$ pod search AFNetworking
输入过后它可能会报:
[!] Unable to find a pod with name, author, summary, or descriptionmatching AFNetworking
解决方案是:
输入:
$ rm ~/Library/Caches/CocoaPods/search_index.json
后在一次输入:$ pod search AFNetworking
就可以咯。
2.install,update速度慢
出现原因:你本地的repo库太长时间没有更新了
解决办法:$ pod repo update
原因在于当执行以上两个命令的时候会升级CocoaPods的specs仓库,如果不想在install,update的时候升级specs库,可以使用参数忽略掉
$ pod install --no-repo-update
$ pod update --no-repo-update
3 . 导入Swift类库
导入Swift语言编写的类库时需要加use_frameworks!,下面以导入Alamofire为例:
platform :ios, '8.0'
use_frameworks!
pod 'Alamofire', '~> 1.3'
4.安装ruby时可能会报
There has been an error while running make install. Halting the installation.
解决办法:
& rvm get master
& rvm reinstall 2.2.2
另外这里有一篇介绍如何在Xcode中使用CocoaPods,免去了命令导入第三方库的繁琐。前提是安装了Alcatraz这个管理插件的工具,点击这里有详细介绍