cocoaPods的使用

不是使用cocoaPods引入第三方库的步骤:

1.把开源库的源代码复制到项目中
2.添加一些依赖框架和动态库-----target ---buildPhases----linkBinaryWithLibraries----addOther---选择静态库的路径添加
3.设置-ObjC,-fno-objc-arc等参数
4.管理他们的更新

使用cocoaPods下载的框架,导入头文件时,用<>

使用了cocoa pods以后打开工程用xcdWorkspace.


CocoaPods的原理:

CocoaPods的原理是将所有的依赖库都放到另一个名为Pods的项目中,然后让主项目依赖Pods项目,这样,源码管理工作都从主项目移到了Pods项目中。Pods项目最终会编译成一个名为libPods.a的文件,主项目只需要依赖这个.a文件即可。

cocoaPods的安装:

CocoaPods可以方便地通过Mac自带的RubyGems安装。

1.打开Terminal,然后键入以下命令:
sudo gem install cocoapods

执行完这句如果报告以下错误:
ERROR: Could not find a valid gem 'cocoapods' (>= 0), here is why:
Unable to download data from https://rubygems.org/ - Errno::ETIMEDOUT: Operation timed out - connect(2) (https://rubygems.org/latest_specs.4.8.gz)
ERROR: Possible alternatives: cocoa pods

这是因为ruby的软件源rubygems.org因为使用亚马逊的云服务,被我天朝屏蔽了,需要更新一下ruby的源,过程如下:
2.查看源 gem sources -l (查看当前ruby的源)
3.删除源gem sources --remove https://rubygems.org/ 或者删除sudo gem sources -rhttps://rubygems.org   

然后输入密码,出现 https://ruby.taobao.org removed from sources表示删除成功


4.设置淘宝的源gem sources -a https://ruby.taobao.org/

出现这句话标示成功添加https://ruby.taobao.org added to sources

5.查看源 gem sources -l

6.如果gem太老,可以尝试用如下命令升级gem

 sudo gem update --system

输入密码Password:
升级成功后会提示: RubyGems system software updated

出现这句话表示升级不成功Latest version currently installed. Aborting.

如果出现下面的话:表示路径设置错误:

  1. /Users/wangzz/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:298:in `to_specs': Could not find 'cocoapods' (>= 0) among 6 total gem(s) (Gem::LoadError)  
  2.     from /Users/wangzz/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:309:in `to_spec'  
  3.     from /Users/wangzz/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_gem.rb:53:in `gem'  
  4.     from /Users/wangzz/.rvm/rubies/ruby-1.9.3-p448/bin/pod:22:in `<main>'  
这就是路径设置的问题,可以通过执行:rvm use ruby-1.9.3-p448 ; 

7.然后重新执行安装下载命令
 sudo gem install cocoaPods

安装成功出现下面Successfully installed cocoapods-0.39.0

Parsing documentation for cocoapods-0.39.0

1 gem installed



8.执行设置:

pod setup

如果没有报错说明安装成功了;

Terminal会停留在 Setting up CocoaPods master repo 这个状态一段时间,是因为要进行下载安装,而且目录比较大,需要耐心等待一下.如果想加快速度,可使用cocoapods的镜像索引.

所有项目的Podspec文件都托管在https://github.com/CocoaPods/Specs,
第一次执行pod setup时,CocoaPods会将这些podspec索引文件更新到本地的~/.cocoapods目录下,
这个索引文件比较大,所以第一次更新时非常慢.
友好人士在国内的服务器建立了Cocoapods索引库的镜像,
所以执行索引跟新操作时候会快很多.具体操作方法如下:
$ pod repo remove master
$ pod repo add master https://gitcafe.com/akuandev/Specs.git
$ pod repo update
这是使用gitcafe上的镜像,将以上代码中的 https://gitcafe.com/akuandev/Specs.git 
替换成 http://git.oschina.net/akuandev/Specs.git 即可使用oschina上的镜像。




=======================================

cocoaPods的使用方法一:

1.在cocoaPods中搜索有没有第三方库: pod search AFNetworking

2.cd 进入工程所在的目录(工程根目录)

3.创建Podfile 

执行命令 touch Podfile或者也可以自己在工程根目录里面直接新建一个名为Podfile的文件,不能写成别的名字,

然后对改文件进行编辑,执行命令 open -e Podfile
第一次执行这个命令,会有一个空白文件打开,可以先放在一边,
Podfile文件的格式应该如下:
platform :ios, '7.0'
pod 'AMap2DMap', '~> 2.5.0'
pod 'AFNetworking', '~> 2.5.3'
pod 'SDWebImage', '~> 3.7.2'

需要注意的几点:platform那一行,ios三个字母都要小写,而且与前面的冒号之间不能有间隔,后面的版本号也可以不写,但是有些开源库对版本是有要求的,比如要在6.0以上才能运行,遇到这样的开源库就需要写上版本号。如果是swift,还需要 在podfile文件中加入这句话:use_frameworks!

3.下载第三方框架pod install   或者pod install --verbose --no-repo-update或者pod install --no-repo-update

4.升级框架:pod update


cocoaPods的使用方法二:

使用CocoaPods

a  新建一个项目,名字PodTest



b  终端中,cd到项目总目录(注意:包含PodTest文件夹、PodTest.xcodeproj、PodTestTest的那个总目录)

[objc]  view plain copy print ?
  1. cd /Users/lucky/Desktop/PodTest   

c  建立Podfile(配置文件)

接着上一步,终端输入 vim Podfile

cocoaPods的使用_第1张图片


键盘输入 i,进入编辑模式,输入

platform :ios, '7.0' 
pod 'MBProgressHUD', '~> 0.8'


然后按Esc,并且输入“ :”号进入vim命令模式,然后在冒号后边输入wq

cocoaPods的使用_第2张图片


注意:键盘输入 :后,才能输入wq。回车后发现PodTest项目总目录中多一个Podfile文件



激动人心的时刻到了:确定终端cd到项目总目录,然后输入 pod install,等待一会,大约3分钟。


cocoaPods的使用_第3张图片


查看项目根目录:

cocoaPods的使用_第4张图片



cocoaPods 使用方法三:

使用A'lcartraz(管理xcode插件的工具)来创建podFile文件




===================================================

Podfile和多个target

Podfile本质上是用来描述Xcode工程中的targets用的 。如果我们不显式指定Podfile对应的target,CocoaPods会创建一个名称为default的隐式target,会和我们工程中的第一个target相对应。换句话说,  如果在Podfile中没有指定target,那么只有工程里的第一个target能够使用Podfile中描述的Pods依赖库。

如果想在一个Podfile中同时描述project中的多个target,根据需求的不同,可以有不同的实现方式。为了说明问题,在原来的工程中再创建一个名称为Second的target,现在的project中包含的target有: cocoaPods的使用_第5张图片

①多个target中使用相同的Pods依赖库

比如,名称为CocoaPodsTest的target和Second的target都需要使用Reachability、SBJson、AFNetworking三个Pods依赖库,可以使用  link_with 关键字来实现,将Podfile写成如下方式: 
link_with 'CocoaPodsTest', 'Second'
platform :ios  
pod 'Reachability',  '~> 3.0.0'  
pod 'SBJson', '~> 4.0.0'  
  
platform :ios, '7.0'  
pod 'AFNetworking', '~> 2.0'
这种写法就实现了CocoaPodsTest和Second两个target共用相同的Pods依赖库。 

②不同的target使用完全不同的Pods依赖库

CocoaPodsTest这个target使用的是Reachability、SBJson、AFNetworking三个依赖库,但Second这个target只需要使用OpenUDID这一个依赖库,这时可以使用  target关键字,Podfile的描述方式如下: 
target :'CocoaPodsTest' do
platform :ios  
pod 'Reachability',  '~> 3.0.0'  
pod 'SBJson', '~> 4.0.0'  
  
platform :ios, '7.0'  
pod 'AFNetworking', '~> 2.0'
end

target :'Second' do
pod 'OpenUDID', '~> 1.0.0'
end

其中,do/end作为开始和结束标识符。

3、使用Podfile管理Pods依赖库版本

再引入依赖库时,需要显示或隐式注明引用的依赖库版本,具体写法和表示含义如下:
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的版本
pod 'AFNetworking', '~>0.1'     //使用大于等于0.1但小于1.0的版本
pod 'AFNetworking', '~>0'     //高于0的版本,写这个限制和什么都不写是一个效果,都表示使用最新版本

======================================

常见错误:

Error 1:

Error fetching http://ruby.taobao.org/:

bad response Not Found 404 (http://ruby.taobao.org/specs.4.8.gz)

解决方案:把安装流程中 $ gem sources -a http://ruby.taobao.org/ 

改为:$ gem sources -a https://ruby.taobao.org/

Error 2:

ERROR:  While executing gem ... (Errno::EPERM)

Operation not permitted - /usr/bin/pod

解决方案:苹果系统升级 OS X EL Capitan 后会出现的插件错误,将安装流程 5.安装 CocoaPods 的 sudo gem install cocoapods

改为 sudo gem install -n /usr/local/bin cocoapods

Error 3:

[!] Unable to satisfy the following requirements:

- `AFNetworking (~> 2.3.1)` required by `Podfile`

Specs satisfying the `AFNetworking (~> 2.3.1)` dependency were found, but they required a higher minimum deployment target.

解决方案:Podfile 文件 中   platform:ios, ‘8.0’  后边的 8.0 是平台版本号 ,一定要加上



文/楚天书舒(简书作者)
原文链接:http://www.jianshu.com/p/071d30a3af02
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。


你可能感兴趣的:(cocoaPods的使用)