CocoaPods使用详细说明

时间:2022-08-30 05:16:29

一、概要

iOS开发时,项目中会引用许多第三方库,CocoaPods(https://github.com/CocoaPods/CocoaPods  )可以用来统一管理这些第三方库。

如果此文章已过时,可以查看 融云 集成文档,有关于cocoaPods的集成说明。点击打开链接

二、安装
1、Ruby环境搭建

当前安装环境为MacBook Air 10.11.4。Mac OS本身自带Ruby,但还是更新一下保险。
a 查看下当前ruby版本:
打开终端输入 ruby -v(确实安装了,更新下ruby)

  1. cailianfengdeMacBook-Air:~ manager$ ruby -v
  2. ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]
  3. cailianfengdeMacBook-Air:~ manager$

b 更新ruby

终端输入:gem update --system  此时可能会出现

  1. ERROR: While executing gem ... (Gem::FilePermissionError) You don‘t have write permissions for the /Library/Ruby/Gems/2.0.0 directory.
  2. zijingMacBook-Pro:~ shiyunlei$ sudo gem update —system

这个是因为你没有权限去更新Ruby,这个时候你可以在终端使用:sudo gem update --system来进行升级

本次得到结果是:

  1. cailianfengdeMacBook-Air:~ manager$ gem update --system
  2. Latest version currently installed. Aborting.
  3. cailianfengdeMacBook-Air:~ manager$

意思是已经是最高版本 如果有报错,可以尝试先更换镜像再执行Ruby更新操作。

2、下载安装CocoaPods准备(更换镜像)

安装CocoaPods时我们要访问cocoapods.org,该网站可能被墙了,这样下载安装可能会很慢,我们可以用淘宝的Ruby镜像来访问该网站,方法如下:

终端输入如下命令(把Ruby镜像指向taobao,避免被墙)

gem sources --remove https://rubygems.org/ 
gem sources -a https://ruby.taobao.org/ 
gem sources -l  (用来检查使用替换镜像位置成功)

得到结果:

  1. cailianfengdeMacBook-Air:~ manager$ gem sources --remove https: //rubygems.org/
  2. https: //rubygems.org/ removed from sources
  3. cailianfengdeMacBook-Air:~ manager$ gem sources -a https: //ruby.taobao.org/
  4. https: //ruby.taobao.org/ added to sources
  5. cailianfengdeMacBook-Air:~ manager$ gem sources -l
  6. *** CURRENT SOURCES ***
  7.  
  8. https: //ruby.taobao.org/
  9. cailianfengdeMacBook-Air:~ manager$

3、下载安装CocoaPods
终端输入:sudo gem install cocoapods  备注:(苹果系统升级 OS X EL Capitan 后改为 $sudo gem install -n /usr/local/bin cocoapods 此次还是用的前面的,也没有出现问题)

  1. cailianfengdeMacBook-Air:~ manager$ sudo gem install cocoapods
  2. Password:

输入电脑管理员密码,回车之后就会安装各种successful,最后会得到:

  1. Installing ri documentation for cocoapods-0.39.0
  2. 21 gems installed

这样就下载安装好了CocoaPods

执行:pod setup

会出现Setting up CocoaPods master repo,说明Cocoapods在将它的信息下载到 ~/.cocoapods里;cd到该目录里,用du -sh *命令来查看文件大小,每隔几分钟查看一次,这个目录最终大小是100多M,就是完成了 。(可能会经过漫长的等待)

4、使用search命令搜索类库名: 
pod search AFNetworking(也可以pod search UI等,可以查询你想要的)

如果CocoaPods支持,将会输出搜索到的所有类库版本和信息,以及在Podfile中配置的写法,终端返回信息如下:

  1.  
  2. -> AFNetworking ( 2.3.1)
  3.  
  4. A delightful iOS and OS X networking framework.
  5.  
  6. (这个语句是需要在编辑Podfile的时候输入的命令,即是如何安装下载相关类库的指令)
  7. pod ‘AFNetworking‘, ‘~> 2.3.1’
  8.  
  9. - Homepage: https: //github.com/AFNetworking/AFNetworking
  10.  
  11. - Source: https: //github.com/AFNetworking/AFNetworking.git
  12.  
  13. - Versions: 2.3.1, 2.3.0, 2.2.4, 2.2.3, 2.2.2, 2.2.1, 2.2.0, 2.1.0,
  14.  
  15. 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,
  16.  
  17. 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,
  18.  
  19. 0.10.1, 0.10.0, 0.9.2, 0.9.1, 0.9.0, 0.7.0, 0.5.1 [master repo]
  20.  
  21. - Sub specs:
  22. - AFNetworking/Serialization ( 2.3.1)
  23. -AFNetworking/Security ( 2.3.1)
  24. - AFNetworking/Reachability ( 2.3.1)
  25. -AFNetworking/ NSURLConnection (2.3.1)
  26. - AFNetworking/ NSURLSession (2.3.1)
  27. - AFNetworking/ UIKit (2.3.1)
  28.  
  29. -> AFNetworking+AutoRetry ( 0.0.5)
  30.  
  31. Auto Retries for AFNetworking requests
  32.  
  33. pod ‘AFNetworking+AutoRetry‘, ‘~> 0.0.5‘
  34.  
  35. - Homepage: https: //github.com/shaioz/AFNetworking-AutoRetry
  36.  
  37. - Source: https: //github.com/shaioz/AFNetworking-AutoRetry.git
  38.  
  39. - Versions: 0.0.5, 0.0.4, 0.0.3, 0.0.2, 0.0.1 [master repo]

这说明,AFNetworking是支持CocoaPods,所以我们可以利用CocoaPods将AFNetworking导入你的项目中。

5、需要在工程中创建一个Podfile文件

使用命令:
cd /Users/cailianfeng/Desktop/TestCocoapodsDemo (进入工程目录,cd后面的是工程的路径)
touch Podfile(创建Podfile文件)

然后使用vim编辑Podfile文件,使用命令:vim Podfile 进入Podfile界面,然后键盘输入 i,进入编辑模式,输入:

  1. platform :ios, '8.0'
  2. target "cocospod" do
  3. pod 'AFNetworking', '~> 2.3.1'
  4. end

注意:cocospod 为项目名。

然后按Esc,并且输入“ :”号进入vim命令模式,然后在冒号后边输入wq,点击回车,保存并退出。

这是会看到项目中多了一个podfile文件,打开可以看见

6、执行pod install 命令
在终端当前目录下输入pod install命令 漫长等待之后,得到结果:

  1. Analyzing dependencies
  2. Downloading dependencies
  3. Installing AFNetworking ( 2.3.1)
  4. Generating Pods project
  5. Integrating client project
  6.  
  7. [!] From now on use `TestCocoapodsDemo.xcworkspace`.

然后进入项目,直接用TestCocoapodsDemo.xcworkspace打开项目。这正是你刚刚运行pod install命令产生的新文件。除了这个文件,你会发现还多了另外一个文件“Podfile.lock”和一个文件夹“Pods”。并且你会发现,此时AFNetworking已经在项目的Pods文件夹中了。之后就随意使用了。

7.说明

当需要同时导入多个第三方时候 就需要修改Podfile了,就是用vim编辑的那个保存在项目根目录中的文件,修改完了Podfile文件,需要重新执行一次pod install命令。
例如:
platform :ios
pod 'JSONKit', '~> 1.4'
pod 'AFNetworking', '~> 2.0'

...

 

三、第二场景 如何正确编译运行一个包含CocoPods类库的项目

有时候好不容易在GitHub上找到一份代码符合自己想需求,下载下来,一编译,发现有各种各样错误。原来是缺失了各种其他第三方类库。这时如果会发现你下载的代码包含了Podfile。意味着你可以用CocoaPods很方便下载所需要的类库。

下载的项目中通常有三个跟CocosPods相关的文件(文件夹):Podfile,Podfile.lock和Pods。

打开终端,cd路径进入下载的项目所在的目录,也就是和Podfile在同一目录下(由于已经有Podfile,所以不需要再创建Podfile),输入以下命令:
pod update
过几秒(也许需要十几秒,取决于你的网络状况)之后,终端出现:

  1. Analyzing dependencies
  2. Fetching podspec for `XXXXXXXX` from `../`
  3. Downloading dependencies
  4. Installing XXXXXXXXXXXXX ( 0.1.6)
  5. Generating Pods project
  6. Integrating client project
  7.  
  8. [!] From now on use `XXXXXXXXXX.xcworkspace`.

这时候,打开项目文件夹看一看,会看到多了一个文件XXXXXXXXXX.xcworkspace;根据终端的信息提示,你以后就需用新产生的XXXXXXXXXX.xcworkspace来运行这个代码了。

注意,这里有个小问题,如果刚刚不是输入pod update,而是输入pod install,会发现类库导入不成功,并且终端出现下面提示:

  1. [!] Required version (XXXXXXXXXX (from `../`)) not found for `XXXXXXXXXXXX`.
  2. Available versions: 0.1.6

这里的意思大概是Podfile文件过期,类库有升级,但是Podfile没有更改 pod install只会按照Podfile的要求来请求类库,如果类库版本号有变化,那么将获取失败,但是pod update会更新所有的类库,获取最新版本的类库。而且你会发现,如果用了pod update,再用pod install 就成功了;其实每次直接用 pod update 也可以。或者先用 pod install,如果不行,再用pod update。