CocoaPods 的详细使用教程

CocoaPods进阶篇

1、Podfile.lock文件
当执行:pod install 安装pod之后,会生成Podfile.lock文件,该文件用于保存已经安装的Pods依赖的版本。例如通过cocoaPods安装AFNetworking依赖库对应的Podfile.lock的文件内容为:

PODS:  
  - AFNetworking (2.5.4):  
    - AFNetworking/NSURLConnection  
    - AFNetworking/NSURLSession  
    - AFNetworking/Reachability  
    - AFNetworking/Security  
    - AFNetworking/Serialization  
    - AFNetworking/UIKit  
  - AFNetworking/NSURLConnection (2.5.4):  
    - AFNetworking/Reachability  
    - AFNetworking/Security  
    - AFNetworking/Serialization  
  - AFNetworking/NSURLSession (2.5.4):  
    - AFNetworking/NSURLConnection  
  - AFNetworking/Reachability (2.5.4)  
  - AFNetworking/Security (2.5.4)  
  - AFNetworking/Serialization (2.5.4)  
  - AFNetworking/UIKit (2.5.4):  
    - AFNetworking/NSURLConnection  

    DEPENDENCIES:  
  - AFNetworking (~> 2.0)  

  SPEC CHECKSUMS:  
  AFNetworking: c7d7901a83f631414c7eda1737261f696101a5cd

Podfile.lock文件最大得用处在于多人开发。对于没有在Podfile中指定Pods依赖库版本的写法,如下:

pod 'AFNetworking' 

该句话用于获取当前AFNetworking这个Pods依赖库的最新版本。

当团队中的某个人执行完pod install命令后,生成的Podfile.lock文件就记录下了当时最新Pods依赖库的版本,这时团队中的其它人check下来这份包含Podfile.lock文件的工程以后,再去执行pod install命令时,获取下来的Pods依赖库的版本就和最开始用户获取到的版本一致。如果没有Podfile.lock文件,后续所有用户执行pod install命令都会获取最新版本的SBJson,这就有可能造成同一个团队使用的依赖库版本不一致,这对团队协作来说绝对是个灾难!

在这种情况下,如果团队想使用当前最新版本的SBJson依赖库,有两种方案:
1).更改Podfile,使其指向最新版本的SBJson依赖库;
2).执行pod update命令;
鉴于Podfile.lock文件对团队协作如此重要,我们需要将它添加到版本管理中,而且最好更改podfile,指定第三库的版本号

2、Podfile文件
Podfile文件的位置一般和项目工程放在同一级别,也就是那个xcodeproj工程文件。如果不放在这个目录里面,需要在Podfile最上面加上一行代码,写上工程的路径(最好放同一层,不要瞎折腾)
指定路径用关键字:xcodeproj


xcodeproj "/Users/apple/Desktop/PodsTest/PodsTest.xcodeproj" 
    
platform :ios, '7.0'    
pod 'AFNetworking', '~> 2.0'

如果不放在和项目工程文件同一路径下,进入Podfile所在路径下,执行pod install命令安装一下cocoapods.

3、如何写Podfile文件中,第三方库的版本
如果不知道AFNetworking最新版本是多少,可以打开终端输入命令:

pod search AFNetworking

回车后,可以得到一串信息:

-> AFNetworking (2.5.4)
   A delightful iOS and OS X networking framework.
   pod 'AFNetworking', '~> 2.5.4'
   - Homepage: https://github.com/AFNetworking/AFNetworking
   - Source:   https://github.com/AFNetworking/AFNetworking.git
   - Versions: 2.5.4, 2.5.3, 2.5.2, 2.5.1, 2.5.0, 2.4.1, 2.4.0, 2.3.1, 2.3.0,
   2.2.4, 2.2.3, 2.2.2, 2.2.1, 2.2.0, 2.1.0, 2.0.3, 2.0.2, 2.0.1, 2.0.0,
   2.0.0-RC3, 2.0.0-RC2, 2.0.0-RC1, 1.3.4, 1.3.3, 1.3.2, 1.3.1, 1.3.0, 1.2.1,
   1.2.0, 1.1.0, 1.0.1, 1.0, 1.0RC3, 1.0RC2, 1.0RC1, 0.10.1, 0.10.0, 0.9.2,
   0.9.1, 0.9.0, 0.7.0, 0.5.1 [master repo]
   - Subspecs:
     - AFNetworking/Serialization (2.5.4)
     - AFNetworking/Security (2.5.4)
     - AFNetworking/Reachability (2.5.4)
     - AFNetworking/NSURLConnection (2.5.4)
     - AFNetworking/NSURLSession (2.5.4)
     - AFNetworking/UIKit (2.5.4)

     -> AFNetworking+AutoRetry (0.0.5)
   Auto Retries for AFNetworking requests
   pod 'AFNetworking+AutoRetry', '~> 0.0.5'
   - Homepage: https://github.com/shaioz/AFNetworking-AutoRetry
   - Source:   https://github.com/shaioz/AFNetworking-AutoRetry.git
   - Versions: 0.0.5, 0.0.4, 0.0.3, 0.0.2, 0.0.1 [master repo]


-> AFNetworking+Ext (1.2.1)
   AFNetworking的封装, 并提供一个 UIImageView+DYLoading  cache in fileSystem+memory
   pod 'AFNetworking+Ext', '~> 1.2.1'
   - Homepage: https://github.com/junhaiyang/AFNetworkingExt
   - Source:   https://github.com/junhaiyang/AFNetworkingExt.git
   - Versions: 1.2.1, 1.2, 1.1, 1.0, 0.5, 0.4, 0.3 [master repo]
   - Subspecs:
     - AFNetworking+Ext/Base (1.2.1)
     - AFNetworking+Ext/AFCustomRequestOperation (1.2.1)
     - AFNetworking+Ext/AFDownloadRequestOperation (1.2.1)
     - AFNetworking+Ext/AFTextResponseSerializer (1.2.1)
     - AFNetworking+Ext/example (1.2.1)
     - AFNetworking+Ext/UIKit (1.2.1)
     - AFNetworking+Ext/UIKit/UIImageView+DYLoading 
......
......

通过这条搜索命令,我们可以得到上面信息,最重要的是第三行

pod 'AFNetworking', '~> 2.5.4'

把它拷贝到Podfile文件中即可。

4、CocoaPods常用的命令:

1).pod install

根据Podfile文件指定的内容,安装依赖库,如果有Podfile.lock文件而且对应的Podfile文件未被修改,则会根据Podfile.lock文件指定的版本安装。每次更新了Podfile文件时,都需要重新执行该命令,以便重新安装Pods依赖库。

2).pod update
若果Podfile中指定的依赖库版本不是写死的,当对应的依赖库有了更新,无论有没有Podfile.lock文件都会去获取Podfile文件描述的允许获取到的最新依赖库版本。

3).pod search
按名称搜索可用的Pods依赖库

4).pod setup
用于更新本地电脑上的保存的Pods依赖库tree。由于每天有很多人会创建或者更新Pods依赖库,这条命令执行的时候会相当慢,还请耐心等待。我们需要经常执行这条命令,否则有新的Pods依赖库的时候执行pod search命令是搜不出来的。

 2015/6/27
posted in CocoaPods干货 

CocoaPods版本升级

有时候需要从服务器端更新代码,发现本地CocoaPods版本较低,需要升级。升级步骤如下:
1、执行命令

$ pod install
[!] The 'master' repo requires CocoaPods 0.37.2 - 

如上提示失败,提示需要CocoaPods 0.37.2版本
查看CocoaPods版本

$ pod --version
0.36.3

再执行更新或者安装的步骤:

$ sudo gem update --system // 先更新gem,国内需要切换源
$ gem sources --remove https://rubygems.org/
$ gem sources -a http://ruby.taobao.org/
$ gem sources -l
\*\*\* CURRENT SOURCES \*\*\*
http://ruby.taobao.org/
$ sudo gem install cocoapods // 安装cocoapods
$ pod setup

和安装过程是一样的,再次查看版本

$ pod --version
0.37.2

更新完成

 2015/6/19
posted in CocoaPods干货 

CocoaPods的安装和使用

之前我没有接触到用CocoaPods来管理第三方库。直到苹果在15年春节之后宣布新政,从那天起,以后新上线的APP必须支持64位。当时没有了解到这条规定,app在提交审核一周后被拒绝了。当时项目中有不少第三方库,得一个一个找,而且还麻烦。毕竟64位替换32位库也费时费力,还得一个一个下载替换。于是师傅当时在项目中引入了CocoaPods。我就跟在后面一直了解吸收他的干货。这几天项目重构完了,我就学着走一遍如何安装和使用CocoaPods。我把其它的项目拷贝一份来做实验。整理如下:

一、首先介绍一下CocoaPods是什么:(百度一下资料呈上)
开发iOS应用时,会经常使用到很多第三方开源类库,比如JSONKit,友盟,AFNetWorking等等。可能某个类库又用到其他类库,所以要使用它,必须得另外下载其他类库,而其他类库又用到其他类库,手动一个个去下载所需类库十分麻烦。另外一种常见情况是,你项目中用到的类库有更新,你必须得重新下载新版本,重新加入到项目中,十分麻烦。
CocoaPods应该是iOS最常用最有名的类库管理工具了,上述两个烦人的问题,通过cocoaPods,只需要一行命令就可以完全解决,当然前提是你必须正确设置它。重要的是,绝大部分有名的开源类库,都支持CocoaPods。所以,作为iOS程序员的我们,掌握CocoaPods的使用是必不可少的基本技能了。

二、下载、安装CocoaPods:
打开终端,直接安装命令是:sudo gem install cocoapods
但是如果不使用代理,一般会失败的。所以使用如下办法,将镜像换成taobao.orh进行下载:
输入下面命令:
gem sources --remove https://rubygems.org/

删除原有镜像源
回车,有反应后再输入:
gem sources -a http://ruby.taobao.org/
修改为淘宝的镜像源,不信验证下:
gem sources -l

屏幕快照 2015-06-19 下午4.29.49

如上所示 表示修改镜像成功了
现在就可以下载了:再在终端运行:
sudo gem install cocoapods
如果网速不好,得重复执行这条命令,到最后提示安装成功即可!就这样,防不胜防的就安装好了cocoapods。

三、做一个实验,在以前的项目中,用cocoapods导入AFNetworking库:(如下步骤所示)
导入前的工程目录结构如下图所示:
2
在导入第三方库之前,需要判断该库是否支持cocoapods,验证是否支持只需要如下命令:
$ pod search AFNetworking
运行之后,出现如下所示情况,说明AFNetworking还是支持cocoapods的。
3
(其实比较长,我只是截图一部分下来说明下的)

需要用cocoapods直接导入AFNetworking,需要一个配置文件,cocoapods 安装和更新第三库,都是按照一个文件名字叫做PodFile的来执行的。
在终端中进入(cd命令)你项目所在目录,然后在当前目录下,利用vim创建Podfile,和CNTaiPingPension.xcodeproj在同一文件夹下(平级)
$ vim PodFile 
(如果是第一次,vim PodFile 就是创建一个新的,以后都是打开修改即可)
然后在Podfile文件中输入以下文字:

platform :ios, ‘7.0’ 
pod AFNetworking~> 2.0

这2条术语可以在AFNetworking的github页面找到,一般第三方支持cocoapods都会提示的。写完按esc 再按shift + : 输入wq(保存并退出),q (退出不保存)
这时候 ls 一下 发现已经多了一个文件,即:
4
现在再执行
$ pod install
回车等出现如下提示,说明成功了 失败就多试几次 网络不好没办法:
5
它让你关掉XCODE在点击CNTaiPingPension.xcworkspace运行项目,而不是之前的CNTaiPingPension.xcodeproj。现在项目中的目录结构如下所示:
7

看看 还多了一个Podfile.lock和Pods文件夹,咦,刚才导入的AFNetworking在哪呢?点击Pods,原来在这:如下图:
6

OK!至此,利用cocoapods导入AFNetworking成功了!这其实只是一小部分,以后再整理了!太神奇了,好东西,值得分享!

posted @ 2015-09-04 21:35  他们都叫我梁子  阅读(2419)  评论(0编辑  收藏  举报