最近开始把项目里面用到的第三方库用CocoaPods方法添加,过程中遇到一些问题,现在把安装过程,使用方法,及本人遇到的问题和亲测的有效方法记录在此。
一。安装
1.ruby环境搭建
本人用的是Mac Book,本身自带ruby环境,但是为了后期安装,最好还是更新一下ruby环境
clf:Cowa gaojun$ gem -v
如果发现不是最新的版本,可以执行下面命令
clf:Cowa gaojun$ gem update --system
更新完以后,再次执行上面命令,提示如下
Latest version currently installed. Aborting.
说明你电脑当前的ruby环境是最新的环境。
上面是假设你的电脑已经有了ruby环境,当电脑上没有ruby环境时候,需要我们自己搭建,指令如下
gem sources --remove https://rubygems.org/
gem sources -a https://ruby.taobao.org/
这是现在网上绝大多数安装ruby镜像到的地址,是淘宝的,但是现在这个地址很不稳定,好在笔者已经找到一个目前最新的稳定地址,更新命令如下
clf:Cowa gaojun$ gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/
这是ruby环境在国内的最新镜像地址,分享给大家了。大家可以看下这个通知[https://ruby-china.org/topics/29250]
下面,继续命令
clf:Cowa gaojun$ gem sources -l
你会看到
*** CURRENT SOURCES ***
https://gems.ruby-china.org/
说明你的ruby环境已经搭建成功了。
2.安装cocoapods
执行命令
clf:Cowa gaojun$ sudo gem install cocoapods
稍后你会看到
Successfully installed cocoapods-1.1.1
Parsing documentation for cocoapods-1.1.1
1 gem installed
现在,用终端cd到你的项目更目录
clf:~ gaojun$ cd Desktop/Cowa
然后执行
vim Podfile
编辑Podfile文件,这里面存放项目里面用到所有的库的版本信息,键盘输入 i 键,进入编辑模式,编辑完成以后,先按下 esc 键,再按下 : w q 键,完成编辑。执行命令
clf:Cowa gaojun$ pod install
这个过程需要等待很久的,因为初始加载你所需要的库文件。
等待安装完成,至此,已经成功为项目添加了依赖库。打开项目文件夹,项目目录类似这样
屏幕快照 2016-12-01 09.26.23.png二。使用
以后打开工程,只要直接打开“Cowa.xcworkspace”即可。在这里,也可以看到刚刚用终端编辑的Podfile文件,以后我们也可以直接在项目中编辑Podfile文件,然后保存,最后执行pod install即可。
最新版本的cocoapods对Podfile文件编辑的格式有了规定,格式如下
屏幕快照 2016-12-01 09.30.40.png库名称后面的标记是指定更新到哪一个版本,如果删除,则每次更新到最新版本。
这里记录下 pod install 和 pod update 的区别
- pod install :这个是第一次在工程里面使用pods的时候使用,并且,也是每次你编辑你的Podfile(添加、移除、更新)的时候使用。每次运行pod install命令的时候,在下载、安装新的库的同时,也会把你安装的每个库的版本都写在了Podfile.lock文件里面。这个文件记录你每个安装库的版本号,并且锁定了这些版本。当你使用pod install它只解决了pods里面,但不在Podfile.lock文件里面的那些库之间的依赖。对于在Podfile.lock里面所列出的那些库,会下载在Podfile.lock里面明确的版本,并不会去检查是否该库有新的版本。对于还不在Podfile.lock里面的库,会找到Podfile里面描述对应版本(例如:pod "MyPod", "~>1.2")。
- pod update:当你运行 pod update PODNAME 命令时,CocoaPods会帮你更新到这个库的新版本,而不需要考虑Podfile.lock里面的限制,它会更新到这个库尽可能的新版本,只要符合Podfile里面的版本限制。如果你运行pod update,后面没有跟库的名字,CocoaPods就会更新每一个Podfile里面的库到尽可能的最新版本。
所以,可以这样理解:你应该使用pod update PODNAME去只更新某个特定的库(检查是否有新版本,并尽可能更新到新的版本)。对应的,你应该使用pod install,这个命令不会更新那些已经安装了的库。当你在你的Podfile里面添加了一个库的时候,你应该使用pod install,而不是pod update,这样既安装了这个库,也不需要去更新其它的已安装库。你应该使用pod update去更新某个特定的库,或者所有的库(在Podfile的限制中)。
我们也可以使用pod去查找一些库
clf:Cowa gaojun$ pod search Alamofire
三。问题解决
这里只是列出了自己遇到的一些问题,在国内的很多个人博客,论坛上面的答案各不一样,实在害人不浅~~~
1.Unable to add a source with url https://github.com/CocoaPods/Specs.git
named master
.
You can try adding it manually in ~/.cocoapods/repos
or via pod repo add
.
解决:分两次运行下面命令
cd ~/.cocoapods/repos
git clone https://github.com/CocoaPods/Specs.git master
2.xcode报错:Command /bin/sh failed with exit code 126
解决:执行pod install
3.While executing gem ... (Errno::EPERM) Operation not permitted - /usr/bin/pod
解决:执行命令
sudo gem install -n /usr/local/bin cocoapods
4./Library/Ruby/Site/2.0.0/rubygems.rb:270:in find_spec_for_exe': can't find gem cocoapods (>= 0.a) (Gem::GemNotFoundException) from /Library/Ruby/Site/2.0.0/rubygems.rb:298:in
activate_bin_path'
from /usr/local/bin/pod:22:in `<main>'
解决:按照上面步骤重新更新ruby环境
5.[!] /usr/bin/git clone https://github.com/romaonthego/RESideMenu.git /var/folders/hb/0_fyfkq52pg7phjnb1523pz00000gp/T/d20161130-24596-uh23fv --template= --single-branch --depth 1 --branch 4.0.7
Cloning into '/var/folders/hb/0_fyfkq52pg7phjnb1523pz00000gp/T/d20161130-24596-uh23fv'...
error: RPC failed; curl 56 SSLRead() return error -36
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
解决:这个我理解的是服务器不稳定,还没有下载完就挂起的原因,所以只要坚持不懈的不停pod install
就可以了。
6.找不到头文件
解决:在TARGETS -> Search Paths -> User Header Search Paths 中 写入 ${SRCROOT} 再将后面参数改为recursive
7.ERROR: While executing gem ... (Errno::EPERM)
Operation not permitted - /usr/bin/pod
解决: sudo gem install -n /usr/local/bin cocoapods
8.ERROR: While executing gem ... (Errno::EPERM)
Operation not permitted - /usr/bin/update_rubygems
解决: https://stackoverflow.com/questions/33015875/operation-not-permitted-usr-bin-update-rubygems
网友评论