CocoaPods的使用和安装

 

  1. CocoaPods概念
    1. CocoaPods 是一个负责管理 iOS 项目中第三方开源库的工具。用 Ruby 写的,并划分成了若干个 Gem 包可以节省设置和更新第三方开源库的时间,将第三方的依赖库统一管理起来,配置和更新只需要通过简单的几行命令即可完成。
    2. 执行 pod update , CocoaPods 就会自动将这些第三方开源库的源码下载下来,并且为我们的工程设置好相应的系统依赖和编译参数。
  2. CocoaPods原理
    1. 下载原理

格式:

pod '依赖名', :git => '依赖项目地址', :branch => '分支'

         pod '依赖名', :git => '依赖项目地址', :tag => '分支'

说明:

当使用Cocoapods导入私有库时:

Cocoapods先是根据:git => ‘git@xxx.git‘ 找到对应的git仓库;

然后根据:tag => ‘1.0.0’定位到对应tag的提交,或者根据 :branch => ‘develop’ 定位到对应分支的提交,如果没有注明Pod依赖包版本则定位到最后一次提交;

然后在这次提交中检索后缀为.podspec的文件;

然后验证name是否与podfile中的一致,如果不一致则install会报错;

验证成功后,就会根据Podspec中的s.source_files找到需要导入的代码文件,并通过其他的的数据找到对应的配置文件或资源文件等;

最后,将其下载到本地项目中。

当使用Cocoapods导入共有库时:

共有库要将podspec文件上传到cocoapods, 在导入的时候通过名字React去cocoapods匹配对应的podspec;

然后根据git地址找到对应的仓库和对应的版本;

然后去匹配新的podspec;

后面流程同私有库

                           

    1. 集成原理
      1. 当所有的依赖库都下载完后,Cocoapods会将所有的依赖库都放到另一个名为Pods的项目中,然后让主项目依赖Pods项目
      2. 这样,源码管理工作都从主目录移到了Pods项目中。Pods项目最终会编译成为一个名为libPods.a的文件,主项目只要依赖这个.a文件即可
      3. 对于资源文件,Cocoapods提供了一个名为Pods-resource.shbash脚本,该脚本在每次项目编译的时候都会执行,将Pods依赖库的各种资源文件复制到目标目录中
      4. Cocoapods还通过一个名为Pods.xcconfig的文件来在编译时设置所有的依赖和参数

 

    1. 版本控制原理
      1. 当执行完pod install之后,cocoapods会生成一个podfile.lock的文件
      2. podfile.lock文件最大的用处在于多人开发。如果你没有在podfile中指定pods版本pod ‘React’,那么默认为获取当前React依赖库的最新版本
      3. 当团队中的某个人执行完pod install命令后,生产的podfile.lock文件就记录下了当时最新pods依赖库的版本,这时团队中的其他人check下来这份包含podfile.lock文件的工程以后,再去执行pod install命令时,获取下来的pods依赖库的版本和最开始用户获取到的版本一致
      4. 如果没有podfile.lock文件,后续所有用户执行pod install命令都会获取最新版本的React,这就可能造成一个团队使用的依赖库版本不一致,这对团队协作来说绝对是个灾难
  1. CocoaPods核心组件
    1. CocoaPods/CocoaPods

这是面向用户的组件,每当执行一个 pod 命令时,这个组件将被激活。它包括了所有实用 CocoaPods 的功能,并且还能调用其它 Gem 包来执行任务。

    1. CocoaPods/Core

Core Gem 提供了与 CocoaPods 相关的文件(主要是 Podfile Podspecs)的处理

      1. Podfile:该文件用于配置项目所需要的第三方库,它可以被高度定制。
      2. Podspecs:该文件描述了一个库将怎样被添加进工程中。.podspec 文件可以标识该第三方库所需要的源码文件、依赖库、编译选项,以及其他第三方库需要的配置
    1. CocoaPods/Xcodeproj

负责处理工程文件,它能创建以及修改 .xcodeproj 文件和 .xcworkspace 文件. 它也可以作为一个独立的包使用,当你要编写修改项目文件的脚本时,可以考虑使用 CocoaPods/Xcodeproj

    1. CocoaPods相关的两个目录
      1. ~/.CocoaPods/repos/: 这个目录存储远端的 podspec 文件到本地。
      2. ~/Library/Caches/CocoaPods/: 这个目录就是缓存文件的存储目录。

 

  1. CocoaPods安装
    1. 替换源

CocoaPods 是基于 ruby ecosystem 的,需要 ruby 环境,使用 ruby gem 命令。所以我们的系统要有 ruby 环境

Mac 系统默认会安装好 ruby 环境,可以在终端输入 $gem sources -l 命令查看系统 ruby 默认源为 https://rubygems.org/,但这个源在国内是访问不到的,所以需要更换 ruby 镜像。

我们可以使用 ruby-china 的源https://gems.ruby-china.com 

      1. 移除系统 ruby 默认源

$gem sources --remove https://rubygems.org/

      1. 使用新的源

$gem sources –a https://gems.ruby-china.com

      1. 验证是否替换成功

$gem sources -l

 

    1. 安装 CocoaPods
      1. 选择版本

安装最新版本: $sudo gem install –n /usr/local/bin CocoaPods

安装指定版本: $sudo gem install –n /usr/local/bin CocoaPods –v 1.0.0

安装最新的release beta版本: $sudo gem install –n /usr/local/bin CocoaPods --pre

      1. 安装

$pod setup

Pod setup命令所有第三方的 Podspec 索引文件更新到本地的 ~/.CocoaPods/repos 目录下。

所有的第三方开源库的 Podspec 文件都托管在 https://github.com/CocoaPods/Specs 管理,我们需要把这个 Podspec 文件保存到本地,这样才能使用命令 pod search 来搜索一个开源库。

注意:首次执行时间比较久。

结果:

         没执行 pod setup:用户目录下找不到 .CocoaPods/repos路面

         执行过,没成功: 会创建 .CocoaPods/repos目录,但为空

执行了,成功:说明把 GitHub 上的 Podsepc 文件更新到了本地,那么会创建~/.CocoaPods/repos 目录,并且 repos 目录里有一个 master 目录,这个 master 目录保存的就是 GitHub 上所有第三方开源库的 Podspec 索引文件。

                            验证:

                                     $pod --version

 

  1. CocoaPods 使用
    1. 常用命令
      1. $pod setup

将所有第三方的 Podspec 索引文件更新到本地的 ~/.CocoaPods/repos/ 目录下,更新本地仓库。

      1. $pod repo update

执行 pod repo update 更新本地仓库,本地仓库完成后,即可搜索到指定的第三方库,作用类似 pod setup

不过这个命令经常不单独调用。比如执行 pod setuppod searchpod installpod update 会默认执行 pod repo update

      1. $pod search 开源库: 查找某个开源库
      2. $pod list: 列出所有可用的第三方库,现在已经 2.4W+ 了,还在不断地增长。
      3. $pod install

根据 Podfile.lock 文件中列举的版本号来安装第三方框架,如果一开始 Podfile.lock 文件不存在,就会按照 Podfile 文件中列举的版本号来安装第三方框架。

如果检查到当前三方库已经有的话,那就不会去下载了。

$pod install --no-repo-update : 安装开源库之前,不会执行 pod repo update指令

      1. $pod update

将所有第三方框架更新到最新版本,并且创建一个新的 Podfile.lock 文件。

无论当前三方库是否在项目中已经存在,都会重新下载更新。

$pod update --no-repo-update : 更新开源库之前,不会执行 pod repo update 指令

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值