cocoapods

简介

cocoapods

CocoaPods项目源码

安装

  1. 使用MAC自带的ruby下的gem命令:
1
2
$ sudo gem install cocoapods
$ pod setup
在执行pod setup时,会输出Setting up CocoaPods master repo,但是会执行很长时间,在此期间CocoaPods将它的信息下载到~/.cocoapods目录下,此时可以cd到该目录,使用du -sh 命令查看下载进度。使用镜像索引可以提高下载速度(下面有介绍)。
  1. 将ruby源替换成国内淘宝源
1
2
3
4
$ gem sources --remove https://rubygems.org/
$ gem sources -a http://ruby.taobao.org/
查看源是否替换成功
$ gem sources -l
  1. 如果安装的CocoaPods不能使用,可以尝试更新gem (sudo gem update —system),更新Iterm(删除原有的iterm,下载并安装新版本的iterm)。

镜像索引

所有的项目的PodSpec文件都托管在podSpec。第一次执行pod setup时,将这些索引文件更新到本地~/.cocoapods/目录下。该文件比较大,所以第一次更新比较慢。

akinkiu在gitcafeocchina上建立了CocoaPods索引镜像。gitcafe和occhina都是国内服务器,在执行索引更新操作时会比较快。

CoaoaPods设置成gitcafe镜像:

1
2
3
$ pod repo remove master
$ pod repo add master https://gitcafe.com/akuandev/Specs.git
$ pod repo update

将以上url改为http://git.oschina.net.akuandev/Specs.git即可使用occhina镜像。

用法

  1. cd到以创建的项目的目录下执行以下命令

    • pod init (生成Podfile文件,编辑该文件,添加所要加入的第三方库的名称版本(版本可以不用加))

      eg:

      pod ‘AFNetworking’, ‘~> 2.0’

      pod ‘JSONKit’

    • pod install (自动将加入的第三方库源码下载下来,且为项目设置号好相应的系统依赖和编译参数)

      注意

    • 使用CocoaPods生成的*.xcworkspace文件打开工程,而不是以前的*.xcodeproj文件。

    • 每次修改了Podfile文件,都需要执行一次pod update命令。

    • pop install之后还生成的另一个文件Podfile.lock,该文件不能放在.gitignore文件中。该文件用来锁定当前各依赖库的版本,之后及时多次执行pod install也不会更改版本,只有执行pod update才会改变Podfile.lock文件。该文件可以在多人协作时,防止第三方库升级造成大家各自的第三方库的版本不一致。Podfile.lock

  2. 查找第三方库

查找CocoaPods管理是否有你想要的库,执行命令 pod search

eg: pod search json 可查找与接送有关的所有库

  1. 生成第三方库帮助文档

使用CocoaPods生成第三方库的帮助文档并集成到Xcode中,可使用brew安装appledoc即可:

1
brew install appledoc

其优点:将帮助文档集成到Xcode中,在敲代码时可以按住opt键查看相应帮助文档

  1. 不更新podspec

CocoaPods在执行pod install 和 pod update 时,会默认更新podspec索引。禁止更新podspec的命令:

1
2
$ pod install --no-repo-update
$ pod update --no-repo-update

原理

CocoaPods的原理是将所有的依赖库都放到一个名为Pods的项目中,然互让主项目依赖Pods项目。

  1. Pods项目最终会编译成一个名为libPods.a的文件,主项目只需要依赖.a这个文件即可。
  2. 对于资源文件,CocoaPods提供了一个名为Pods-resources.sh的bash脚本,该脚本在每次项目编译的时候都会执行,将第三方的各个资源文件复制到目标目录中。
  3. CocoaPods通过一个名为Pods.xcconfig的文件在编译的时候设置所有的参数和依赖。