CocoaPods简介
CocoaPods是OS X和iOS下的一个第三类库管理工具,通过CocoaPods工具我们可以为项目添加被称为“Pods”的依赖库(这些类库必须是CocoaPods本身所支持的),并且可以轻松管理其版本。
CocoaPods意义体现在两个方面:
第一,在引入第三方库时它可以自动为我们完成各种各样的配置,包括配置编译阶段、连接器选项、甚至是ARC环境下的-fno-objc-arc配置等。
第二,使用CocoaPods可以很方便地查找新的第三方库,这些类库是比较“标准的”,而不是网上随便找到的,这样可以让我们找到真正好用的类库
之前电脑上如果没有安装过的话,按照下面这个流程安装应该会很顺利,当然了也不排除遇到意外情况。
直接上安装过程
1.查询gem镜像:
gem sources -l
2.移除旧的镜像
gem sources -remove
移除目标镜像,如:gem sources --remove https://rubygems.org/
3.添加新的gem镜像
gem sources -a https://gems.ruby-china.org/
4.再次查询gem镜像
gem sources -l
核对镜像是否是 https://gems.ruby-china.org/,如果有其他多与的镜像则需要一一移除
- 安装
sudo gem install -n /usr/local/bin cocoapods
(OS X 10.11以前的安装命令行是sudo gem install cocoapods)
sudo gem install -n /usr/local/bin cocoapods
6.安装成功之后,查看是否是最后版本
$ pod --version
不出意外的话,至此就算是安装完成了。可以使用了pod search '第三方名'搜索一些第三方类库了
安装过程中常见的问题
1:解决CocoaPods安装时报的问题,http://ruby.taobao.org/latest_specs.4.8.gz 报404
解决 bad response Not Found 404 (http://ruby.taobao.org/latest_specs.4.8.gz)
原因:淘宝的那个镜像(https://ruby.taobao.org/ )已经不可用了。所以我们现在用最新支持的ruby镜像(https://gems.ruby-china.org/)
gem sources --remove https://ruby.taobao.org/
gem sources -a https://gems.ruby-china.org/
gem sources -l
sudo gem install -n /usr/local/bin cocoapods
2执行 sudo gem install -n /usr/local/bin cocoapods
报错:如果报以下错误
ERROR: While executing gem ... (Gem::DependencyError) Unable to resolve dependencies: cocoapods requires cocoapods-core (= 1.1.1), cocoapods-downloader (< 2.0, >= 1.1.2), cocoapods-trunk (< 2.0, >= 1.1.1), xcodeproj (< 2.0, >= 1.3.3)
说明Gem版本太低需要更新则执行:
$ sudo gem update --system
cocoPods的简单使用
1.进入工程文件夹 pod init 创建Podfile文件
2.打开Podfile文件,添加要导入的第三方库名称如: pod '', '~> 2.1.0'
3.关闭Podfile文件,pod install 下载文件
关于Podfile.lock
当你执行pod install之后,除了 Podfile 外,CocoaPods 还会生成一个名为Podfile.lock的文件,Podfile.lock 应该加入到版本控制里面,不应该把这个文件加入到.gitignore中。因为Podfile.lock会锁定当前各依赖库的版本,之后如果多次执行pod install 不会更改版本,要pod update才会改Podfile.lock了。这样多人协作的时候,可以防止第三方库升级时造成大家各自的第三方库版本不一致。
原理
大概研究了一下 CocoaPods 的原理,看懂了个皮毛。说一下自己的理解,它是将所有的依赖库都放到另一个名为 Pods 项目中,然后让主项目依赖 Pods 项目,这样,源码管理工作都从主项目移到了 Pods 项目中。发现的一些技术细节有:
Pods 项目最终会编译成一个名为 libPods.a 的文件,主项目只需要依赖这个 .a 文件即可。
对于资源文件,CocoaPods 提供了一个名为 Pods-resources.sh 的 bash 脚本,该脚本在每次项目编译的时候都会执行,将第三方库的各种资源文件复制到目标目录中。
CocoaPods 通过一个名为 Pods.xcconfig 的文件来在编译时设置所有的依赖和参数。