1. CocoaPods简介
CocoaPods是一个用来帮助我们管理iOS第三方依赖库的工具。它可以解决库与库之间的依赖关系,目的是让我们能自动化的、集中的、直观的管理第三方开源库。
CocoaPods的安装和使用
CocoaPods是用Ruby实现的,要想使用它首先需要有Ruby的环境。幸运的是OS X系统默认的已经可以运行Ruby了,因此我们只需要执行以下命令:
$ sudo gem install cocoapods
$ pod setup
① 执行完install命令半天没反应
原因是Ruby的默认源使用的是cocoapods.org,国内访问这个网址有时候会有问题,请替换成Ruby China的源,命令如下:
$ gem sources --remove https://rubygems.org/
$ gem sources -a https://gems.ruby-china.org/
要想验证是否替换成功了,可以执行:
$ gem sources -l
正常的输出是:
*** CURRENT SOURCES ***
https://gems.ruby-china.org/
② gem版本过老
gem是管理Ruby库和程序的标准包,如果它的版本过低也可能导致安装失败,解决方案自然是升级gem,执行下述命令即可:
$ sudo gem update --system
③ pod setup等待时间太久
pod setup在执行时,CocoaPods会将托管在https://github.com/CocoaPods/Specs上面的所有项目的Podspec文件更新到~/.cocoapods/目录下,这个文件很大,所有第一次更新会非常慢。方法是直接手动下载到本地,操作如下:
$ git clone https://git.coding.net/CocoaPods/Specs.git ~/.cocoapods/repos/master --progress
使用
<span id = "jump"></span>
创建Podfile文件
在Xcode项目的根目录下执行命令创建Podfile文件,操作如下:
$ pod init
Podfile文件的格式如下:
source 'https://github.com/CocoaPods/Specs' #源的下载地址
platform :ios, '7.0' #支持的ios系统最低版本
pod 'JSONKit', '~> 1.4' #第三方库以及版本号
target 'XBPodSDK' do #项目的target
# use_frameworks!
end
上面的格式比较简单,查看更多详情,请跳转到链接Podfile介绍
<font color=red>注意:Podfile文件中加入“use_frameworks!”表示打包成framework动态库(ios8之前是静态库),如果没有这个配置,则最终打包成.a静态库</font>
安装依赖库
Podfile文件创建完成后,在当前的工程目录下,执行命令来安装依赖库:
$ pod install
<font color=red>注意:使用CocoaPods生成的.xcworkspace文件来打开工程</font>
更新依赖库
当依赖的第三方库升级新版本后,如果Podfile文件指定库为最新版本或者不指定版本,都会更新到最新版。
① 全部更新
如果要使Podfile文件中所有的库都更新到指定版本,需要执行命令如下:
$ pod update
<font color=red>注意:用“~>”指定的版本是一个范围,并不是特定版本,所有会产生误解(自己指定了版本,为什么pod update会更新到更高的版本)。为了防止这种情况,可以使用“<=”来指定版本。</font>
直接执行pod update命令,有时会比较慢,这是因为pod会更新本地的版本库,添加参数可以取消更新版本库,如下:
$ pod update --no-repo-update
<font color=red>注意:这种情况需要保证本地版本库最新。</font>
② 更新指定库
如果想只更新某个依赖库,可以在pod update后面加上库名,如下:
$ pod update [LIB_NAME] #库的名称
查找第三方库
如果不知道cocoaPods管理的库中,是否有想要的库,可以通过<font color=red>pod search</font>命令进行查找,以下是用<font color=red>pod search json</font>查找到的所有可用的库:
-> JSON (5.0.0)
JSON made so simple, it hurts
pod 'JSON', '~> 5.0.0'
- Homepage: https://github.com/3lvis/JSON
- Source: https://github.com/3lvis/JSON.git
- Versions: 5.0.0, 5.0.0-beta1, 4.0.2, 4.0.1, 4.0.0, 3.1.0, 3.0.0, 2.1.1, 2.1.0, 2.0.0 [master repo]
-> json-parser-swift (0.2.0)
JSON parser & tokenizer in pure Swift
pod 'json-parser-swift', '~> 0.2.0'
- Homepage: https://github.com/webconnex/json-parser-swift
- Source: https://github.com/webconnex/json-parser-swift.git
- Versions: 0.2.0, 0.1.1, 0.1.0, 0.0.2, 0.0.1 [master repo]
//... 以下省略若干行
Podfile.lock作用
在开始使用CocoaPods,执行完pod install之后,会生成一个Podfile.lock文件,每次执行pod update也会更新Podfile.lock文件。
作用
Podfile.lock文件最大得用处在于多人开发,保证团队中每个人使用的依赖库的版本一致
CocoaPods管理私有库
创建私有 Spec Repo
Spec Repo介绍
Spec Repo是所有的Pods的一个索引,就是一个容器,所有公开的Pods都在这个里面,它实际是一个远端的Git仓库,当你使用了Cocoapods后它会被clone到本地的~/.cocoapods/repos目录下,可以进入到这个目录看到master文件夹就是这个官方的Spec Repo了。这个master目录的结构是这个样子的
.
├── Specs
└── [SPEC_NAME]
└── [VERSION]
└── [SPEC_NAME].podspec