在osx 10.11之前cocopods问题不多,但是升级到11之后的版本,之前的cocopods大多用不了,需要重新安装,对于我这种使用测试版系统的技术狂来说,每次都需要重新安装很多东西,
当然,cocopods也避免不了安装很多次了。
对于新手来说,使用cocopods开发,还是节省了相当多的开发时间,以下便是cocopods安装和安装过程中遇到的问题及解决办法:
1 bearsg:~ $ sudo gem install cocoapods
2 ERROR: Could not find a valid gem 'cocoapods' (>= 0), here is why:
3 Unable to download data from http://ruby.taobao.org/ - bad response Not Found 404 (http://ruby.taobao.org/specs.4.8.gz)
4 bearsg:~ $ sudo gem install cocoapods
5 ERROR: Could not find a valid gem 'cocoapods' (>= 0), here is why:
6 Unable to download data from http://ruby.taobao.org/ - bad response Not Found 404 (http://ruby.taobao.org/specs.4.8.gz)
7 bearsg:~ boai$ sudo gem update --system
8 ERROR: While executing gem ... (Gem::RemoteFetcher::FetchError)
9 bad response Not Found 404 (http://ruby.taobao.org/specs.4.8.gz)
解决办法:
1 sudo gem sources -r https://rubygems.org
2 sudo gem sources -a http://rubygems.org
1 bearsg:~ $ sudo gem sources -r https://rubygems.org
2 source https://rubygems.org not present in cache
3 bearsg:~ $ sudo gem sources -a http://rubygems.org
4 https://rubygems.org is recommended for security over http://rubygems.org
5 Do you want to add this insecure source? [yn] y
最后会提示
Do you want to add this insecure source? [yn]
你选择 y就行了
然后出现:
http://rubygems.org added to sources
这就说明成功了,就可以执行下面的安装了。
执行下面的语句:
1 sudo gem install cocoapods
会出现下面的界面:
boai:~ boai$ sudo gem install cocoapods
Fetching: nap-1.0.0.gem (100%)
Successfully installed nap-1.0.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
···
此处省略N行代码
····
Done installing documentation for nap, thread_safe, tzinfo, i18n, activesupport, escape, colored, molinillo, netrc, cocoapods-trunk, cocoapods-try, cocoapods-stats, cocoapods-search, cocoapods-plugins, cocoapods-downloader, claide, xcodeproj, fuzzy_match, cocoapods-core, cocoapods after 21 seconds
WARNING: Unable to pull data from 'http://ruby.taobao.org/': bad response Not Found 404 (http://ruby.taobao.org/specs.4.8.gz)
20 gems installed
看到最后一行代码,你就放1万个心吧。。。
然后就可以查看你的pods版本了:
输入:pod
然后会出现下面的代码:
bearsg:~ $ pod
Usage:
$ pod COMMAND
CocoaPods, the Cocoa library package manager.
Commands:
+ cache Manipulate the CocoaPods cache
+ init Generate a Podfile for the current directory.
+ install Install project dependencies to Podfile.lock versions
+ ipc Inter-process communication
+ lib Develop pods
+ list List pods
+ outdated Show outdated project dependencies
+ plugins Show available CocoaPods plugins
+ repo Manage spec-repositories
+ search Search for pods.
+ setup Setup the CocoaPods environment
+ spec Manage pod specs
+ trunk Interact with the CocoaPods API (e.g. publishing new specs)
+ try Try a Pod!
+ update Update outdated project dependencies and create new
Podfile.lock
Options:
--silent Show nothing
--version Show the version of the tool
--verbose Show more debugging information
--no-ansi Show output without ANSI codes
--help Show help banner of specified command
bearsg:~ $
这就安装成功了,就可以正常使用pod了。。。
打开终端:
cd 你的项目路径
bearsg:~ $ cd /Users/boai/Documents/Xcode项目/PodDemoTest
在终端中进入(cd命令)你项目所在目录,然后在当前目录下,利用vim创建Podfile,运行:
$ vim Podfile
然后在Podfile文件中输入以下文字:
platform :ios, '9.2'
pod "AFNetworking", "~> 3.0.4"
注意,这段文字不是小编凭空生成的,可以在AFNetworking的github页面找到。这两句文字的意思是,当前AFNetworking支持的iOS最高版本是iOS 9.2, 要下载的AFNetworking版本是3.0.4。
然后保存退出。vim环境下,保存退出命令是:
:wq
这时候,你会发现你的项目目录中,出现一个名字为Podfile的文件,而且文件内容就是你刚刚输入的内容。注意,Podfile文件应该和你的工程文件.xcodeproj在同一个目录下。
这时候,你就可以利用CocoPods下载AFNetworking类库了。还是在终端中的当前项目目录下,运行以下命令
$ pod install
因为是在你的项目中导入AFNetworking,这就是为什么这个命令需要你进入你的项目所在目录中运行。
运行上述命令之后,小编的终端出现以下信息:
Wills-MacBook-Pro:CocoaPodsDemo Robin$ pod install
/Users/Robin/.rvm/gems/ruby-2.0.0-p643@global/gems/cocoapods-0.39.0/lib/cocoapods/command.rb:129: warning: Insecure world writable dir /Applications/Cocos/tools/ant/bin in PATH, mode 040777
Updating local specs repositories
CocoaPods 1.0.0.beta.4 is available.
To update use: `gem install cocoapods --pre`
[!] This is a test version we'd love you to try.
For more information see http://blog.cocoapods.org
and the CHANGELOG for this version http://git.io/BaH8pQ.
Analyzing dependencies
Downloading dependencies
Installing AFNetworking (3.0.4)
Generating Pods project
Integrating client project
[!] Please close any current Xcode sessions and use `CocoaPodsDemo.xcworkspace` for this project from now on.
注意最后一句话,意思是:以后打开项目就用 CocoaPodsDemo.xcworkspace 打开,而不是之前的.xcodeproj文件。
这就成功了,然后再看看你的项目路径里面,是不是多出来很多文件?
Podfile , Pods, PodDemotest.xcworkspace, Podfile.lock 等文件夹
然后双击*.workspace 文件就可以使用pods了!
现在,你就可以开始使用AFNetworking.h啦。可以稍微测试一下,在你的项目任意代码文件中输入
#import<AFNetworking.h>
然后编译,看看是否出错。如果你严格按照上述的步骤来,是不可能出错的啦。
至此,CocoPods的第一个应用场景讲述完毕。总结一下就是:
下面继续讲述第二种使用场景。
你也许曾经遇到过(特别是新手iOS开发者)这种情况,好不容易在GitHub上找到一份代码符合自己想需求,兴冲冲下载下来,一编译,傻眼了,发现有各种各样错误。一看,原来是缺失了各种其他第三方类库。这时候莫慌,你再仔细一看,会发现你下载的代码包含了Podfile。没错,这意味着你可以用CocoaPods很方便下载所需要的类库。
下面,以代码 prankPro-master为例来说明如何正确编译运行一个包含CocoPods类库的项目。
prankPro-master是一个类似GoPro的应用。当你去prankPro-master的GitHub地址下载这份代码之后,打开Example工程(prankPro-master),编译,你会发现Xcode报告一大堆错误,基本都是说你编译的这份代码找不到某某头文件,这就意味着你要成功编译prankPro-master的Example代码,必须先导入一些第三方类库。同时你会发现在prankPro-master文件夹下面有三个跟CocosPods相关的文件(文件夹):Podfile,Podfile.lock和Pods。这时候,打开终端,进入prankPro-master所在的目录,也就是和Podfile在同一目录下,和场景1一样,输入以下命令(由于已经有Podfile,所以不需要再创建Podfile):
$ pod update
过几秒(也许需要十几秒,取决于你的网络状况)之后,终端出现:
这时候,再回到prankPro-master文件夹看一看,会看到多了一个文件prankPro-master.xcworkspace:
根据终端的信息提示,你以后就需用新产生的prankPro-master.xcworkspace来运行这个Example代码了。
打开prankPro-master.xcworkspace,编译运行,成功!:
注意,这里有个小问题,如果刚刚你不是输入
$ pod update
而是输入
$ pod install
会发现类库导入不成功,并且终端出现下面提示:
[!] Required version (UAAppReviewManager (from `../`)) not found for `UAAppReviewManager`.
Available versions: 0.1.6
这里的意思大概是Podfile文件过期,类库有升级,但是Podfile没有更改。pod install只会按照Podfile的要求来请求类库,如果类库版本号有变化,那么将获取失败。但是 pod update 会更新所有的类库,获取最新版本的类库。而且你会发现,如果用了 pod update,再用 pod install 就成功了。
那你也许会问,什么时候用 pod install,什么时候用 pod update 呢,我又不知道类库有没有新版本。好吧,那你每次直接用 pod update 算了。或者先用 pod install.如果不行,再用 pod update。
OK,Over!
更多精彩内容请访问:www.bearsg.com