因为项目要用到第三方包ZXingObjC,需要安装cocoapods.下面是我曲折的安装过程。
1、直接在终端内输入:
sudo gem install cocoapods
我直接安装成功。
由于国内网络问题,可能会被封掉,导致安装失败。
可通过终端内输入:
gem sources
~XXX$ gem sources *** CURRENT SOURCES *** http://rubygems.org/
查看下载源,如图我的下载源是http://rubygems.org/.
当然如果安装失败的话,可以尝试换一个下载源(国内比较常用的是http://taobao.org/),操作如下:
gem sources --remove http://rubygems.org/
gem sources -a http://taobao.org/
当然这个下载过程可能会慢一些,耐心等候。
2、由于mac ox 自带的ruby 版本为1.8.7,可能需要升级ruby的版本,我们需要安装RVM以来升级ruby。
(1)终端输入:
curl -L get.rvm.io | bash -s stable
等待,直到成功安装好RVM.
(2)终端输入:
source ~/.bashrc
source ~/.bash_profile
(3)测试是否安装正常,查看版本,终端输入:
rmv -v
3、用RVM升级Ruby
(1)查看当前ruby版本,终端输入:
ruby -v
可以看到当前版本的信息。
(2)列出已知的ruby版本,终端输入:
rvm list known
可以看到列出的ruby不同版本的信息列表。
(3)安装你想要安装的版本,终端输入
rvm install ruby 1.9.3
等待.......
4、这个时候可能会要求你安装Homebrem,中途会让你按enter或者return键
在终端信息中你可以看到如下信息:
should do the following before running this installer again: rm -rf /usr/local/Cellar /usr/local/.git && brew cleanup
终端输入:
rm -rf /usr/local/Cellar /usr/local/.git && brew cleanup
等待......
homebrem安装成功后,继续在终端输入:
rvm install ruby 1.9.3
自此ruby终于升级完成。
5、然后我就可以安装cocoapos了,这次应该成功了吧,至少我是成功了。
终端输入:
sudo gem install cocoapods
各种等待中......
6、因为我是安装的ZXingObjc,我就以它为例来讲了。
安装完cocoapods以后,终端输入:
pod search ZXingObjC
可以看到ZXingObjC的版本列表以及最新版本。
当然也可以到github上查看你的库的版本信息或许会有意想不到的收获哦,至少我是这么做的。
我看到的信息有:
Installation The recommended way to install ZXingObjC is with CocoaPods, a dependency mananger for Objective-C projects. After installing CocoaPods just add ZXingObjC to your Podfile: platform :ios, ‘7.0‘ pod ‘ZXingObjC‘, ‘~> 3.0‘
这个信息对我来说是相当有用的。
7、cd 到你项目所在的根目录,比如我的项目是TestProject,终端输入:
(1) cd /Users/XXX/Documents/Work-Project/TestProject
然后在终端中输入:
vim Podfile
同时编辑这个文件,添加两行如下语句保存并退出:
platform :ios, ‘7.0‘
pod ‘ZXingObjC‘, ‘~>3.0‘
现在知道为什么我会说第6步中的信息对我相当重要了吧。什么?vim命令不会,那去找度娘吧,她会帮助你的。
(2)然后就可以安装ZXingObjC库啦。
终端输入:
pod install Analyzing dependencies
8、什么,又出错了。
―― MARKDOWN TEMPLATE ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― ### Report * What did you do? * What did you expect to happen? * What happened instead? ### Stack ``` CocoaPods : 0.33.1 Ruby : ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-darwin12.0] RubyGems : 2.2.2 Host : Mac OS X 10.8.5 (12F45) Xcode : 5.1.1 (5B1008) Ruby lib dir : /Users/maguang/.rvm/rubies/ruby-2.1.1/lib Repositories : master - https://github.com/CocoaPods/Specs.git @ 547e828b7036ce1220a439e1c53c720410af74b0 ``` ### Error ``` NoMethodError - undefined method `ansi‘ for nil:NilClass /Users/maguang/.rvm/gems/[email protected]global/gems/claide-0.6.1/lib/claide/command/validation_helper.rb:77:in `prettify_validation_suggestion‘ /Users/maguang/.rvm/gems/[email protected]global/gems/claide-0.6.1/lib/claide/command/validation_helper.rb:21:in `argument_suggestion‘ /Users/maguang/.rvm/gems/[email protected]global/gems/claide-0.6.1/lib/claide/command.rb:436:in `validate!‘ /Users/maguang/.rvm/gems/[email protected]global/gems/claide-0.6.1/lib/claide/command.rb:280:in `run‘ /Users/maguang/.rvm/gems/[email protected]global/gems/cocoapods-0.33.1/lib/cocoapods/command.rb:48:in `run‘ /Users/maguang/.rvm/gems/[email protected]global/gems/cocoapods-0.33.1/bin/pod:33:in `<top (required)>‘ /Users/maguang/.rvm/rubies/ruby-2.1.1/bin/pod:23:in `load‘ /Users/maguang/.rvm/rubies/ruby-2.1.1/bin/pod:23:in `<main>‘ /Users/maguang/.rvm/gems/[email protected]global/bin/ruby_executable_hooks:15:in `eval‘ /Users/maguang/.rvm/gems/[email protected]global/bin/ruby_executable_hooks:15:in `<main>‘ ``` ――― TEMPLATE END ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― [!] Oh no, an error occurred. Search for existing github issues similar to yours: https://github.com/CocoaPods/CocoaPods/search?q=undefined+method+%60ansi%27+for+nil%3ANilClass&type=Issues If none exists, create a ticket, with the template displayed above, on: https://github.com/CocoaPods/CocoaPods/issues/new Don‘t forget to anonymize any private data!
看到错误千万不要害怕。看到错误信息的最后几行语句了吗?他告诉我们类似的问题在别人那里也已经出现过了,相关问题的讨论路径也已经告诉我们了,相信你能找到解决方案的。
当然我还是要在这里说一下解决方案:
这个问题是cocoaPods 0.33.1的一个bug,所以我将cocoaPods版本改为0.32.1。
在终端中输入:
sudo gem uninstall cocoapods
sudo gem install cocoapods -v 0.32.1
sudo rm -rf ~/.cocoapods && sudo rm -fr ~/.cocoapods/repos/master && pod setup && pod install (当然你也可以分开写,分开执行)
9、现在应该可以成功了吧,可惜有报错了。各种无语中......
错误信息如下:
[!] Invalid `Podfile` file: undefined local variable or method `en_US‘ for #<Pod::Podfile:0x00000102a5d8b0>. Updating CocoaPods might fix the issue.
这是编码的问题
查看编码,终端中输入:
locale
你会看到如下信息:
LANG="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_CTYPE="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_ALL=
发现都是zh,如要转换一下:
终端中输入:
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
这个时候你可以继续执行了。
慢着,这时你最好先cd到你的项目的根目录下
打开前面你创建的Podfile文件,终端中输入:
vim Podfile
然后将文件中的内容清空,重新编辑一遍,保存退出。
9、然后,终于可以下载第三方包了。终端中执行
pod install
成功了,信息如下:
Downloading dependencies
Installing ZXingObjC (3.0.2)
又是各种等待.....