Cocoapods 安装及使用

什么是 CocoaPods

CocoaPods是一个用Ruby写的,用作 Swift 和 Objective-C 项目的依赖管理器。

CocoaPods 的安装

CocoaPods 是用 Ruby 构建的,它可以使用 macOS 上可用的默认 Ruby 进行安装。也可以使用 Ruby 版本管理器。

注意:CocoaPods 的版本安装会受到 Xcode 版本的影响

默认 Ruby 安装

使用默认的 Ruby 安装将要求 在安装 gems 时使用 sudo

sudo gem install -n /usr/local/bin cocoapods

无 Sudo 安装

  • 使用 --user-install 安装

    1. ~/.zshrc配置环境变量

      export GEM_HOME=$HOME/.gem
      export PATH=$GEM_HOME/bin:$PATH
      PATH="`ruby -e 'puts Gem.user_dir'`/bin:$PATH"
      
    2. 安装 Cococapods

      gem install cocoapods --user-install
      
  • 使用 rvm 管理的 ruby 安装,关于 rvm 的安装可以参照

    gem install cocoapods
    

Pod Setup

  • MacOS Catalina 及以后的系统,可替换镜像源

    git clone https://github.com/CocoaPods/Specs.git ~/.cocoapods/repos/trunk
    
  • MacOS Catalina 以前的系统

    pod setup
    
  • 添加 私有源或镜像源

    pod repo add REPO_NAME SOURCE_URL
    

CocoaPods 的 specs repo 默认在 ~/.cocoapods/repos 路径,Cache 默认路径在 ~/Library/Cache/CocoaPods

使用 CococaPods

初始化 Pod

pod init

部分 Command Line API

Cocoapods Command-Line

#下载并安装所有依赖项
pod install
#更新依赖库
pod update
#查找可更新的库
pod outdated
#删除项目中的 CocoaPods
pod deintegrate
# 搜索
pod search

编辑 Podfile

# 指定的 workspace,可选
workspace 'MyWorkspace'
# 指定的 project,可选
project 'Myxcodeproj'
# 不指定会默认,可配置镜像源、私有源
source 'https://github.com/CocoaPods/Specs.git'
# 支持的平台和版本
platform :ios, '9.0'
# 可忽略引用库的所有警告
inhibit_all_warnings!
# 抽象的 Target 用于多个 Target
abstract_target 'Shows' do
  # 尽可能不使用 动态库
  #use_frameworks!
  # 添加需要的 Pod
  pod 'testPod'
  # 添加指定版本的 Pod
  #'> 0.1'任何高于 0.1 的版本
  #'>= 0.1'0.1 版及更高版本
  #'< 0.1'任何低于 0.1 的版本
  #'<= 0.1'版本 0.1 和任何更低版本
  pod 'testVersion','1.1.0'
  # 添加指定 configutartion 的 Pod 
  pod 'testConfigutartion',:configutartions =>['Debug']
  # 添加从指定Git仓库下载指定 Tag 的Pod
  pod 'testGitSource',:git=>'https://github.com/test/testGitSource.git',:tag=> '1.0.0'
  # 添加指定本地路径的 Pod
  pod 'testLocal', :path => '../code/Pods/'

  # Has its own copy of ShowsKit + ShowWebAuth
  target 'ShowsiOS' do
    pod 'ShowWebAuth'
  end

  # Has its own copy of ShowsKit + ShowTVAuth
  target 'ShowsTV' do
    pod 'ShowTVAuth'
  end
end

什么是 Podfile.lock?

Podfile.lock 文件是在第一次运行 pod install 后生成的,并跟踪已安装的每个 Pod 的版本。通过这种方式,CocoaPods 避免了因依赖项发生意外更改而引起的问题。

Pod install 做了什么?

  1. 创建或更新 workspace
  2. project 添加到 workspace
  3. 将 CocoaPods 静态库添加到 workspace
  4. libPods.a 添加到:targets => build phases => link with libraries
  5. 将 CocoaPods 的 xcconfig 文件添加到应用程序的项目中。
  6. 将应用的 target xcconfig 更改为基于 CocoaPods 的配置。
  7. 添加构建阶段以将资源从安装的任何 pod 复制到应用程序包。即在所有其他构建阶段之后的“脚本构建阶段”,具有以下内容:
    • Shell:/bin/sh
    • Script::${SRCROOT}/Pods/PodsResources.sh

什么时候使用 pod install

将在第一次要检索项目的 pod 时使用,也可以在每次编辑 Podfile 以添加、更新或删除 pod 时使用。

  • 每次pod install运行命令时,会下载和安装新的 Pod,它都会在 Podfile.lock 文件中写入为每个 Pod 安装的版本。 Podfile.lock 文件跟踪每个 Pod 的已安装版本并锁定这些版本。
  • 当运行 pod install,只会解析 Podfile.lock
    • 对于 Podfile.lock 文件中已经列出的 Pod,会下载其对应版本,不会尝试检查是否有更新的版本可用
    • 对于 Podfile.lock 文件中未列出的 Pod,会搜索与Podfile(如pod 'MyPod', '~>1.2')中描述的版本相匹配的版本,如果未指定版本,则会下载最新的版本

pod update 做了什么?

运行时pod update,CocoaPods 会尝试查找每个 pod 的更新版,而不考虑 Podfile.lock 文件. 它会将 pod 更新到可能的最新版本(只要它符合Podfile 中的版本限制),更新之后会修改 Podfile.lock 中 Pod 的版本。

正确地使用 pod update

建议使用pod update [podname] ,将只能更新特定的 pod(检查是否存在新版本并相应地更新 pod)。与之相反,pod install 它不会尝试更新已安装的 pod 版本。

是否将 Pods 目录加入源代码管理中

加入 Pods 目录的好处
  • 克隆 repo 后,项目可以立即构建和运行,即使机器上没有安装 CocoaPods。无需运行pod install,也无需联网。
  • Pod 始终可用,即使 Pod 的源(例如 GitHub)出现故障。
  • 克隆 repo 后,Pod 保证与原始安装中的相同。
忽略 Pods 目录的好处
  • 源代码控制 repo 会更小,占用更少的空间。
  • 只要所有 Pod 的源(例如 GitHub)都可用,CocoaPods 通常能够重新创建相同的安装。
  • 执行源代码控制操作时不会有任何冲突需要处理,例如合并具有不同 Pod 版本的分支。

注:无论 Pods 是否加入源代码管理,PodfilePodfile.lock 都应始终处于版本控制之下。

CocoaPods 插件

如何安装插件

  1. 安装 gem 包

    • 使用 gem 命令安装

      gem install [插件名称]
      
    • 编辑 Gemfile,使用 bundler 安装,可用于团队协作

      source 'https://rubygems.org'
      
      gem 'cocoapods'
      gem 'cocoapods-binary'
      
  2. Podfile 中添加

     platform :ios, '9.0'
    + plugin 'cocoapods-repo-update'
      use_frameworks!
    

你可能感兴趣的:(Cocoapods 安装及使用)