(转)程序员面试闪充--Cocoapods的详解

449
原文链接: cloud.tencent.com

在开发iOS应用时,会经常使用到很多第三方开源类库,比如JSONKit,AFNetWorking等等。可能某个类库又用到其他类库,所以要使用它,必须得另外下载其他类库,而其他类库又用到其他类库,“子子孙孙无穷尽也”。

一、介绍

CocoaPods是开发OSX和iOS应用程序的一个第三方库的依赖管理工具。利用CocoaPods,可以定义自己的依赖关系(称作pods),并且随着时间的变化,以及在整个开发环境中对第三方库的版本管理非常方便。

优点:快速查找新的第三方库。替换旧的框架(缩短开发周期和提升软件质量)/ 在引入第三方库时自动配置编译选项,减少错误。

原理:将所有的依赖库都放到另一个名为Pods的项目中,让主项目依赖Pods项目,如此一来,所有的源码管理工作都从主项目中移到了Pods项目中。 1)Pods项目最终会编译成一个名为libPods.a的文件,主项目只需要依赖这个.a文件即可。 2)对于资源文件,Cocoapods提供了一个名为Pods-resources.sh的bash脚本,该脚本在每次项目编译的时候都会执行,将第三方库的各种资源文件复制到目标目录中。 3)CocoaPods通过一个名为Pods.xconfig的文件来编译时设置所有的依赖参数。

远程索引库里存放的是各种框架的描述信息,这个库托管在 Github 上。 在 install cocoapods 命令后,需要执行 pod setup 这个命令,pod setup 命令就是将远程索引库克隆到本地来。 当执行 pod search 命令时,如果本地索引文件不存在,会创建这个文件,如果这个文件存在,则会在此文件中进行索引,确认所需要的框架是否存在。

二、安装

1、升级Gem

系统太老可能会有问题,所以安装之前最好升级一下gem

sudo gem update --system

2、切换cocoapods的数据源

cocoapods的数据源在国外,在国内访问速度会特别慢,隐藏将数据源切换到tabbao。先删除数据源,再添加和查看。

gem sources --remove https://rubygems.org/
gem sources -a https://ruby.taobao.org/
gem sources -l

3、安装cocoapods

sudo gem install cocoapods
sudo gem install -n/usr/local/bin cocoapods  (10.11以上的系统)

4、将Podspec文件的托管地址从github切换到国内的oschina上。podspec能管理许多的第三方库。切换步骤是先删除再添加再更新。

但并不是所有的库都在Podspec的管辖范围之内的,如何确定第三方库是否被Podspec托管了呢? 在github上输入库名,若发现有文件以.podspec结尾,就可以确定它被托管了。

pod repo remove master

//下面这两个地址都可以进行托管  这步的操作是把托管的库全部下载下来
pod repo add master http://git.oschina.net/akuandev/Specs.git

pod repo add master https://gitcafe.com/akuandev/Specs.git

pod repo update

之后就陷入了漫长的等待中……

5、设置pod仓库

pod setup

6、测试

pod --version

如果终端显示了版本号,则说明cocoapods安装成功。

三、使用

1、利用cocoapods来安装第三方框架

  • 进入要安装框架的项目的.xcodeproj同级的文件夹
  • 在该文件中新建一个podfile文件
touch Podfile
  • 在文件中告知cocoapods需要安装的框架信息
    • 该框架支持的平台
    • 使用的iOS版本
    • 框架的名称
    • 框架的版本

    如果不会写,可以到github上去查找某个开源库,上面有示范。

2、安装

pod install --no-repo-update  //不更新,若想更新只用pod install
pod update --no-repo-update

3、说明

例子:

platform :ios, '8.0' 用来设置所有第三方库所支持的iOS最低版本
pod 'SDWebImage','~2.6' 设置框架的名称和版本号

版本号规则: '>1.0' 可以安装任何高于1.0的版本 '>=1.0' 可以安装任何高于或等于1.0的版本 '<1.0' 可以安装任何低于1.0的版本 '<=1.0' 可以安装任何低于或等于1.0的版本 '~>0.1' 任何高于或等于0.1的版本,但是不包含高于1.0的版本 '~>0' 任何版本,相当于不指定,默认采用最新版本号

可以通过pod search 框架名查看框架是否在cocopods的管理之下

四、cocoapods的插件

在github上搜索kattrali/cocoapods-xcode-plugin插件来安装第三方框架

将该插件下载下来,运行之后退出Xcode

通过CocoaPods菜单选项创建出一个新的podfile文件。

之后会弹出一个模板,此时就可以填写需要的库的信息了。

当然,通过该插件也能安装第三方库,但是速度比命令行更慢。

五、CocoaPods相关面试题

1、请说明一下Cocopods的作用和原理 答:CocoaPods是一个第三方库的管理工具,用来管理项目中的第三方框架。它的原理就是将所有的依赖库都放到一个名为Pods的项目中。Pods项目会编译出一个libPods.a的文件,主项目只要依赖这个.a文件即可。这样,依赖库源码管理的工作都从主项目移到了Pods项目中。

2、在使用cocoapods管理第三方框架时,如何修改版本? 答:打开Podfile文件修改Podfile文件中的第三方框架的版本。

3、如何通过 CocoaPods 查找第三方库? 答: pod search xxx(第三方库)

4、请简单说明在安装cocoapods时,使用pod install命令安装框架后的大致过程 答: 1)分析依赖:该步骤会分析Podfile,查看不同类库之间的依赖情况。如果有多个类库依赖于同一个类库,但是依赖于不同的版本,那么cocoaPods会自动设置一个兼容的版本。 2)下载依赖:根据分析依赖的结果,下载指定版本的类库到本地项目中。 3)生成Pods项目:创建一个Pods项目专门用来编译和管理第三方框架,CocoaPods会将所需的框架,库等内容添加到项目中,并且进行相应的配置。 4)整合Pods项目:将Pods和项目整合到一个工作空间中,并且设置文件链接

讲解视频: Cocoapods详解 参考链接: 你真的会用CocoaPods吗 iOS开发之 Xcode的 Cocoapods插件使用方法