CocoaPods用法

来源:互联网 发布:淘宝男装店铺排行粉丝 编辑:程序博客网 时间:2024/06/13 00:46

一、CocoaPods介绍

1.使用CocoaPods的原因

 我们在进行iOS开发的时候,引入第三方的开源库能够提高开发效率,例如:SBJson,AFNetworking等等。传统使用这些库的方法需要:
 a)下载开源库的代码并引入工程
 b)在工程中添加开源库使用到的framework
 存在的问题是当开源库有更新,还需要将项目中开源库删除,在添加新的。。。这种情况下,CocoaPods应运而生。

2.什么是CoCoaPods

 CocoaPods是一个用于帮我们管理第三方依赖库的工具,自动下载库的源码,更新,在项目中生成一个Pod的文件夹用于第三方库的管理,让我们自动化的,集中的,直观的管理第三方开源库

二、CocoaPods安装

1.安装

 CocoaPods是Ruby实现,首先要有Ruby的环境,在Mac OS下已经默认有Ruby环境,所以只需执行以下命令
$ sudo gem install cocoapods
 安装完成后,执行命令
$ pod setup
这样完成安装。

2.解决安装问题

 a)install后半天没反应
   由于Ruby默认的源是cocoapods.org,国内被墙,所以一种方案是将源替换成为淘宝源,命令为
$ gem sources --remove https://rubygems.org///有反应后$ gem sources -a http://ruby.taobao.org/
 想要验证是否替换成功执行
$ gem sources
 输出结果是
*** CURRENT SOURCES ***http://ruby.taobao.org/
这样代表替换成功,然后执行
$ sudo gem install cocoapods

三、CocoaPods使用

1.创建Podfile
在项目根目录下执行 
$ pod init
这样就会在目录下生成一个Podfile,要添加第三方类库 ,可以先search一下,执行
$ pod search xxx//其中xxx是你要添加第三方类库名称
搜索结束后,编辑Podfile文件夹
  1 # Uncomment this line to define a global platform for your project  2  platform :ios, '7.0'  3   4 target 'MasonryDemo' do  5 pod 'Masonry', '~> 0.6.1'  6 end      
 然后执行
$ pod install
 便会出现
Analyzing dependenciesCocoaPods 0.38.2 is available.To update use: `gem install cocoapods`For more information see http://blog.cocoapods.organd the CHANGELOG for this version http://git.io/BaH8pQ.Downloading dependenciesInstalling Masonry (0.6.2)Generating Pods projectIntegrating client project
 说明安装第三方类库完成,这时会在根目录下产生一个.xcworkspace结尾的文件,以后运行项目的时候就点击这个文件运行。同时也会出现Pods文件夹
补充:
生成的Podfile.lock是什么?
 在第一次执行pod install的时候回生成一个podfile.lock文件,用于跟踪每个安装pod的版本。
例如 我的podfile中内容如下:
 platform :ios, '7.0'target 'MasonryDemo' dopod 'Masonry', '~> 0.6.1'end
这时,我的podfile.lock中内容如下:
PODS:  - Masonry (0.6.2)DEPENDENCIES:  - Masonry (~> 0.6.1)SPEC CHECKSUMS:  Masonry: 362e8a1cc0beada4a4c4832d5e863da2a51533beCOCOAPODS: 0.38.2

这里我们在podfile中是指定了Masonry的版本号,如果没有指定,而只是 pod 'Masonry' ,此时在生成的podfile.lock中会指定一个Masory的版本号(例如0.6.1),这样如果我们在别的机器上再次执行pod install的时候,由于podfile.lock的存在,所以仍然获取是版本号为0.6.1的Masonry,即使有最新的Masonry存在。基于这个原因,如果在编辑podfile的时候没有指定版本号(~>0.6.1)这个,那么最好是将podfile.lock纳入版本管理,但是我更关注于在编辑podfile的时候指定版本号,这样在多人协同开发的时候,更方便pod的更新,尤其是pod是指定自己定制的,改动频繁的pod。

关于版本号的指定

除了可以不指定pod的版本外,可以手动指定pod的版本号

  • '>0.1' 表示任何一个高于0.1的版本
  • '>=0.1'包含0.1版本在内的任意高版本
  • '<0.1' 任意一个低于0.1的版本
  • '<=0.1'包含0.1版本在内的任意低版本 
    除了逻辑操作符以外,CoCoaPods还提供了一个'~>'的操作符:
  • '~>0.1.2'表示从版本0.1.2到0.2版本,不包含0.2
  • '~>0.1'表示从版本0.1到1.0版本,不包含1.0版本
  • '~>0'表示版本0或者更高版本,相当于不指定版本
    最后,使用:head可以指定最新的版本
    pod 'Objection', :head
    引用Pods版本冲突
    Pods通常会依赖其他的pods,当多个pods分别依赖不同版本的同一pods的时候,就会出现冲突,这时候通常会有以下提示:
    [!]Podfile tries to activate 'GoogleAnalytics-iOS-SDK(=2.0beta4)',but already activated version '3.0'by AEAnalytics/GoogleAnalytics(1.6).
    出现这种情况的时候,通常的做法就是将GoogleAnalytics-iOS-SDK pod这一行放在ARAnalytics这一行前面,并指定版本号。
    pod 'GoogleAnalytics-iOS-SDK','2.0beta4'
    pod 'ARAnalytics/GoogleAnalytics'
    指定本地文件夹中的一个pod
    当你要指定一个本地的一个pod的时候,可以使用 :path
    pod 'AFNetworking', :path => '~/Documents/AFNetworking' 当指定这个文件夹中的pods的时候,千万要保证文件夹中存在.podspec的文件。
    指定一个库中repo 有些时候,你要指定你自己github中的pod,这种情况下可以用下面几种指令:
    当指定的pod是在master上的时候:
    pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git'
    当指定某个分支上面的时候:
    pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git', :branch => 'dev'
    通过tag指定repo的时候:
    pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git', :tag => '0.7.0'
    通过某个提交点指定repo的时候:
    pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git', :commit => '083fdeaa9a'
    同样我们一样要保证repo的根目录中包含相应的podsepc文件


0 0
原创粉丝点击