关于安装Cocoapods
Cocoapods(后简称为pod
)是一个Ruby程序, 当然可以在Gem里找到并安装.
但如果我们系统里有统一的包管理器Homebrew(后简称brew
), 更应该经由它来安装, 这样也便于统一的管理版本, 以避免不同的包在不同的程序管理下的混乱局面.
通过brew
安装pod
就很简单:
brew install cocoapods
升级Cocoapods
随着Xcode及SDK的不断升级, Cocoapods也在跟着不断升级以适应项目生成.
所以我们一定要及时更新pod
版本, 以免在Xcode升级后, 生成的xcodeproj
和pod
有兼容问题.
如上所述, 通过brew
安装的包, 也应该通过brew
来管理版本, 升级也很简单:
# 先更新下brew的formula信息:
brew update
# 如果Cocoapods有可用更新上面的命令结果会展示出来.
# 想查看全部可更新的包:
brew outdated
# 更新Cocoapods
brew upgrade cocoapods
CDN
新的pod(1.9.x)已支持CDN加速, 不过目前也没用出速度区别来~
可以看到的改变在~/.cocoapods/repos/目录下,
- 旧的 master仓库/trunk仓库 已经没了, 现在默认仓库名为cocoapods.
- 新增一个trunk文件夹, 类别为CDN (https://cdn.cocoapods.org/), 此目录非git仓库.
实际使用下, pod install会从CDN读取以确定安装的库的版本.
也就是说, 库版本的确定现在的路径是:
Podfile.lock > CDN > cocoapods repo
如需更新必须使用pod update
.
利用指定repo来加速
指定repo本是可以添加私有Spec仓库的.
例如我曾在某项目里用到:
Podfile:
source 'https://github.com/CocoaPods/Specs.git'
source 'https://github.com/blodely/LYSpecs.git'
source 'https://e.g.some.company.git.server/PrivateSpecs.git'
来指定除了官方仓库外, 还有自己的LYSpecs仓库(里面有一些未推到官方的libs), 和公司的私有库(包含一些模块化的库, 但仅限公司内部访问).
source就可以指定多来源.
而pod
仓库在GitHub, 对于国内用户来说访问速度不是特别友好, 特别是Spec仓库目录及文件众多, 克隆和拉取都很慢, 容易因网络波动断开.
这样我们就可以用一些国内的Cocoapods spec的镜像来作为源.
应用起来很简单:
# 在Podfile首行加上你所想用的镜像地址
# 清华源
source 'https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git'
# 或者码云的源
source 'https://gitee.com/mirrors/CocoaPods-Specs.git'
# 或者其他
注意找信得过源哦!~
推荐没什么大问题的情况下, 大家都使用官方源.
关于Repo仓库
用过pod search
、pod repo add
, 可能会找到在路径~/.cocoapods/repos/
下的一些仓库.
它们事实上就是一个git
管理的仓库, 包含了所有被提上去的pod库的spec等信息.
所以当我们对一个项目的Podfile运行pod install
命令时, 它会知道每一个pod库应该从哪去获取.
search的索引
pod
的spec仓库如此复杂而缓慢, 搜索如果是直接从中进行, 那效率会太低.
所以pod
的做法是, 根据仓库创建一个用于搜索的索引文件(index), 然后使用索引来搜索(pod search
).
这个文件位于~/Library/Caches/CocoaPods/search_index.json
.
当首次克隆完spec仓库后执行搜索时, 或是添加了新的spec仓库后执行搜索时, 它都会出现一个Creating search index for spec repo 'xxx'..
的等待过程.
如若遇到索引文件不正确的情况无法search, 可以删除该index, 让pod重新生成一个, 来修复该问题.
Author
Wednesday, July 8, 2020