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
安装-
在
~/.zshrc
配置环境变量export GEM_HOME=$HOME/.gem export PATH=$GEM_HOME/bin:$PATH PATH="`ruby -e 'puts Gem.user_dir'`/bin:$PATH"
-
安装 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
#下载并安装所有依赖项
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 做了什么?
- 创建或更新
workspace
。 - 将
project
添加到workspace
。 - 将 CocoaPods 静态库添加到
workspace
- 将
libPods.a
添加到:targets => build phases => link with libraries
- 将 CocoaPods 的
xcconfig
文件添加到应用程序的项目中。 - 将应用的
target xcconfig
更改为基于 CocoaPods 的配置。 - 添加构建阶段以将资源从安装的任何 pod 复制到应用程序包。即在所有其他构建阶段之后的“脚本构建阶段”,具有以下内容:
- Shell:
/bin/sh
- Script::
${SRCROOT}/Pods/PodsResources.sh
- Shell:
什么时候使用 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 是否加入源代码管理,
Podfile
和Podfile.lock
都应始终处于版本控制之下。
CocoaPods 插件
如何安装插件
-
安装 gem 包
-
使用 gem 命令安装
gem install [插件名称]
-
编辑 Gemfile,使用 bundler 安装,可用于团队协作
source 'https://rubygems.org' gem 'cocoapods' gem 'cocoapods-binary'
-
-
在
Podfile
中添加platform :ios, '9.0' + plugin 'cocoapods-repo-update' use_frameworks!