cocoa pods的安装及使用:
一:在mac环境下一般都有自带的ruby环境,使用时仅需要进行升级。
在终端下的命令:
$ sudo gem update --system
查看ruby环境的版本信息:
$ ruby -v
如果Ruby没有安装,请参考 http://www.cnblogs.com/daguo/p/4097263.html。
二:安装CocoaPods时我们要访问cocoapods.org,用淘宝的RubyGems镜像来代替官方版本,执行以下命令:
$ gem sources --remove https://rubygems.org/
等到有反应后键入命令:
$ gem sources -a https://ruby.taobao.org/
********* 淘宝目前已停用http协议的镜像服务,在配置中用https代替**************
查看ruby下的sources的命令
$ gem sources -l
只有在终端中出现下面文字才表明你上面的命令是成功的:
*** CURRENT SOURCES ***
https://ruby.taobao.org/
三 :安装Cocoapods,在终端输入命令:
$ sudo gem install cocoapods
等上十几秒钟,CocoaPods就可以在你本地下载并且安装好了,不再需要其他设置。
,
$ pod search AFNetworking
三.CocoaPods的使用
(1)在终端shell中cd 来到你要管理的项目
(2)添加第三方库
搜索一个开源库
$ pod search AFNetworking
在工程目录里建一个Podfile文件
$ touch Podfile
键入内容:
$ vim Podfile
内容按这个格式来
platform :iOS,'9.0'
pod 'ASIHTTPRequest', '~> 1.8.2'
在编辑完后按 esc,然后按":",这个时候输入wq保存退出
运行:pod install 你的工程就多了个xworkspace文件夹,以后用这个打开工程
四.CocoaPods的使用心得
(1)最近使用CocoaPods来添加第三方类库,无论是执行pod install还是pod update都卡在了Analyzing dependencies不动 原因在于当执行以上两个命令的时候会升级CocoaPods的spec仓库,加一个参数可以省略这一步,命令如下: pod install --verbose --no-repo-update pod update --verbose --no-repo-update
$ pod install只会按照Podfile的要求来请求类库,如果类库版本号有变化,那么将获取失败。但是 $ pod update会更新所有的类库,获取最新版本的类库。每次用$ pod update就行。
(2)安装一个xcode插件管理工具 http://alcatraz.io,执行curl -fsSL https://raw.github.com/supermarin/Alcatraz/master/Scripts/install.sh | sh 完了打开xcode->window->package manger 搜cocoapods安装,方便操作。
(3)用到svn,git多人协作的话,Pods/这个文件夹不要上传,.../Pods/Pods.xcodeproj ...Pods/Target Support Files/这些每次编译都会改动从而引起合并代码的时候冲突
pod ‘AFNetworking’ //不显式指定依赖库版本,表示每次都获取最新版本 pod ‘AFNetworking’, ‘2.0’ //只使用2.0版本 pod ‘AFNetworking’, ‘>2.0′ //使用高于2.0的版本 pod ‘AFNetworking’, ‘>=2.0′ //使用大于或等于2.0的版本 pod ‘AFNetworking’, ‘<2.0′ //使用小于2.0的版本 pod ‘AFNetworking’, ‘<=2.0′ //使用小于或等于2.0的版本 pod ‘AFNetworking’, ‘~>0.1.2′ //使用大于等于0.1.2但小于0.2的版本,相当于>=0.1.2并且<0.2.0 pod ‘AFNetworking’, ‘~>0.1′ //使用大于等于0.1但小于1.0的版本 pod ‘AFNetworking’, ‘~>0′ //高于0的版本,写这个限制和什么都不写是一个效果,都表示使用最新版本
问题处理:
- 升级ruby
sudo gem update —system
-
按照网上的教程,来到这一步应该就是要执行“sudo gem install cocoapods”来下载cocoa pods了,但是将系统升级到了10.11后,会发现不好使,个人猜测是10.11修改了部分目录的权限,导致无法cocoapods下载的时候无法写入默认目录,具体提示为:
ERROR: While executing gem ... (Errno::EPERM) Operation not permitted - /usr/bin/fuzzy_match
在stackoverflow上搜索,顺利找到了解决方法,改掉将默认下载目录的环境变量,这里需要改两个值:GEM_PATH
和GEM_HOME
,一个是让别人找到cocoapods,一个是它下载的路径,这里你可以理解为两个作用一样就好啦,具体操作如下:
先新建一个存放cocoapods等其他gems的目录:
mkdir -p $HOME/Software/ruby
再通过以下命令更改两处环境变量
export GEM_HOME=$HOME/Software/ruby
export PATH=$PATH:$HOME/Software/ruby/bin
需要注意的export命令只对当前终端窗口有用,关闭或者在其他窗口操作需要重新再敲一次,当然你也可以把上述命令放在 /etc/profile文件中,这样下次登录后会执行这里面的命令。 -
通过以上步骤,下载cocoapods了,命令为:
gem install
cocoa pods还有就是安装cocoapods没有权限的时候,本来是$sudo gem install cocoapods ,但是显示没有权限,换成这句$sudo gem install -n /usr/local/bin cocoa pods ERROR: While executing gem ... (Errno::EPERM) Operation not permitted - /usr/bin/pod bogon:~ my$ sudo gem install -n /usr/local/bin cocoa pods
- >>>升级pod库后的Podfile的书写规范
- 出现问题 :
-
[!] The dependency `AFNetworking` is not used in any concrete target.
podfile的格式问题造成的
标准格式:
platform :ios, '8.0'
#use_frameworks!个别需要用到它,比如reactiveCocoa
target'MyApp'do
pod'AFNetworking','~> 2.6'
pod'ORStackView','~> 3.0'
pod'SwiftyJSON','~> 2.3'
end
- 里面的 MyApp 记得替换为自己攻城里面的target。这样就基本OK了,执行pod install / pod update 就都可以了。(use_frameworks! 这个是个别需要的,这里修改一下,可以把我上面的代码中的这一行【删除】)
- Setting up CocoaPods master repo 卡着不动
-
1、那是因为 淘宝的那个镜像(https://ruby.taobao.org/ )已经不可用了。所以我们现在用最新支持的ruby镜像(https://gems.ruby-china.org/)
需要的命令行:
$ gem sources -r https://rubygems.org/ (移除旧版本的镜像,如果你不知道你电脑上目前用的是什么镜像,可用 $ gem sources -l 来查看)
$ gem sources -a https://gems.ruby-china.org/ (增加可用的镜像)
$ gem sources -l (用来检查使用替换镜像位置成功)2、当pod setup 进入Setting up CocoaPods master repo 等待的时候表示正在下载了,此时你可通过新开一个终端窗口,输入"cd ~/.cocoapods/"命令行跳到cocoapods文件夹内,执行"du -sh *"查看正在下载的文件夹的大小
3、当出现如下
[!] An error occurred while performing `Git pull` on repo `master`.
[!] /usr/bin/git pull --ff-only
这个错误应该是说这个节点有问题。就又找资料,然后试试把cocoapods的节点删除,重新添加一个节点,或许就行,说干就干:
原因: Cocoapods的分支不支持当前最新的Xcode版本
解决办法: 删除master分支 重新建立新的分支
sudo rm -fr ~/.cocoapods/repos/master
然后再: pod setup
mac安装cocoapods教程及错误处理
注意:以下命令都是通过终端执行
安装cocoapods的步骤
安装
-
第一步:
sudo gem install cocoapods
注释:如果你的mac系统是10.11,则使用下面这个命令
sudo gem install -n /usr/local/bin/ cocoapods
-
第二步:
pod setup
注释:pod setup在执行时,会输出Setting up CocoaPods master repo,会等待很长时间,可以使用 cd ~/.cocoapods进入此目录下,然后用du -sh *来查看下载进度
错误处理
-
Ruby版本低于2.2.2报错:
Error installing pods:activesupport requires Ruby version >= 2.2.2.
解决方法:按照下面升级Ruby版本进行解决 -
现有的Ruby源网址访问不了,SSL协议不支持
ERROR: While executing gem … (OpenSSL::SSL::SSLError) SSL_connect SYSCALL returned=5 errno=0 state=SSLv3 read server hello A
解决方法:按照下面检测Ruby资源进行解决
检测Ruby资源
-
第一步:先验证当前的Ruby资源
gem sources -l
注释:一般情况下是https://rubygems.org/ ,但是这个资源很有可能会被墙,所以我们接下来要替换它,如果不是这个源,可跳到第几步 -
第二步:移除当前的默认源
gem sources -r https://rubygems.org/
-
第三步:利用新的源,一般情况下使用淘宝的Ruby镜像可以防止被墙
gem sources -a https://ruby.taobao.org/
-
第四步:检测新源是否替换成功
gem sources -l
如果正常,则显示为下图
升级Ruby版本
我们准备使用rvm对Ruby版本,因为rvm可以使你拥有多个版本的Ruby,并且可以在多个版本之间自由切换检测安装rvm
-
第一步:检测rvm版本
rvm -v
注释:如果能显示版本,则说明你本身安装了rvm -
第二步:安装rvm
curl -L get.rvm.io | bash -s stable
等待执行完毕后继续输入
source ~/.rvm/scripts/rvm
-
第三步:检测rvm版本
rvm -v
注释:如果能显示版本,则说明你本身安装了rvm
检测安装Ruby
-
第一步:查看已安装的Ruby
rvm list
注释:下图是作者的显示内容,注意你的ruby版本要大于或等于2.2.2,否则会无法安装cocoapods,如果你的ruby版本小于2.2.2,继续下一步,若大于或等于2.2.2,可以跳过检测安装Ruby这一项了
-
第二步:查看Ruby的版本,和第一步作用类似
ruby -v
注释:下图是作者的显示截图
-
第三步:如果有小于2.2.2的版本的Ruby,则卸载它
rvm remove 2.2.4
注释:成功后,记得用第一步和第二步检测,看是否成功卸载,检测成功后,继续执行下一步 -
第四步:列出Ruby可安装的版本信息
rvm list known
-
第五步:安装一个Ruby版本
rvm install 2.2.4
如果想升级成默认版本的话,执行下条语句
rvm use 2.1.4 --default
-
第六步:再次使用第一步和第二步查看Ruby版本信息,确保安装成功,Ruby版本已经至少达到2.2.2,则检测安装Ruby的步骤完成
/Library/Ruby/Site/2.0.0/rubygems/dependency.rb:308:in `to_specs': Could not find 'cocoapods' (>= 0) among 40 total gem(s) (Gem::MissingSpecError)
解决方案:
LINdeMacBook-Pro:~ linwaydon$ pod --version
/Library/Ruby/Site/2.0.0/rubygems/dependency.rb:308:in `to_specs': Could not find 'cocoapods' (>= 0) among 40 total gem(s) (Gem::MissingSpecError)
Checked in 'GEM_PATH=/Users/linwaydon/.gem/ruby/2.0.0:/Library/Ruby/Gems/2.0.0:/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/gems/2.0.0', execute `gem env` for more information
from /Library/Ruby/Site/2.0.0/rubygems/dependency.rb:320:in `to_spec'
from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_gem.rb:65:in `gem'
from /usr/local/bin/pod:22:in `<main>'
LINdeMacBook-Pro:~ linwaydon$ gem install cocoapods -V --no-ri --no-rdoc //电脑会重启
......
......
......
LINdeMacBook-Pro:~ linwaydon$ sudo gem install cocoapods -V
/Library/Ruby/Gems/2.0.0/gems/cocoapods-1.3.1/lib/cocoapods/user_interface/inspector_reporter.rb
/Library/Ruby/Gems/2.0.0/gems/cocoapods-1.3.1/lib/cocoapods/validator.rb
ERROR: While executing gem ... (Errno::EPERM)
Operation not permitted - /usr/bin/pod
LINdeMacBook-Pro:~ linwaydon$ sudo gem install -n /usr/local/bin cocoapods
Successfully installed cocoapods-1.3.1
Parsing documentation for cocoapods-1.3.1
Installing ri documentation for cocoapods-1.3.1
1 gem installed
LINdeMacBook-Pro:~ linwaydon$ pod --version
1.3.1
问题2:[!] 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`
解决方案:LINdeMacBook-Pro:~ linwaydon$ pod repo add master https://github.com/CocoaPods/Specs.git
[!] To setup the master specs repo, please run `pod setup`.
LINdeMacBook-Pro:~ linwaydon$ pod setup
链接:http://www.jianshu.com/p/57b599e48ba2
淘宝镜像已换为阿里云使用变更:http://blog.csdn.net/ylgwhyh/article/details/50542688
之后执行pod install
控制台出现这样的提示信息:
/usr/local/bin/pod install
env: ruby_executable_hooks: No such file or directory
解决方法:
在终端输入 which ruby_executable_hooks 或 which GEM
把得到的路径复制,打开Xcode-> Product-> cocoaPods - >GEM_PATH 粘贴刚才得到的路径 把最后的/gem 或 /pod去掉试试
在xcode9中,用Cocoapods的时候, 碰到了 这个错误 Resolved command path for "pod" is invalid. Expanded GEM_PATH: /usr/bin
解决方案:
$ sudo gem install -n /usr/local/bin cocoa pods
-