一、CocoaPods的安装
CocoaPods的安装方式异常简单,Mac下都是自带ruby,使用ruby的gem命令即可下载安装:
$ sudo gem install cocoapods
$ pod setup
如果你的gem太老,可以尝试用如下命令升级gem:
$ sudo gem update –system
另外,ruby的软件源rubygems.org因为使用亚马逊的云服务,所以被蒙蔽了,需要更新一下ruby的源替换成国内淘宝的源:
先移除当前ruby的源
gem sources – remove https://rubygems.org/
更换为国内淘宝的源
gem sources -a http://ruby.taobao.org/
查看一下当前的源是否更新成功
gem sources -l
如果终端输出下面的结果说明成功了
* CURRENT SOURCES *
有一点需要注意,pod setup在执行的时候,会输出Setting up CocoaPods master repo ,但是会等待比较久的时间。这步其实是CocoaPods 在将它的信息下载到~/.cocoapods目录下,如果你等太久,可以试着开出一个终端窗口cd到这个目录,用du -sh*来查看下载进度。下面我会说明通过“使用CocoaPods的镜像索引”来提高下载的速度。
二、使用CocoaPods的镜像索引
所有的项目的Podspec文件都托管在https://github.com/CocoaPods/Specs。第一次执行pod setup时,CocoaPods会将这些Podspec索引文件更新到本地的~/.cocoapods/目录下,这个索引文件比较大,有80MB左右。所以第一次更新时非常慢,可能要一个小时。
一个akinliu(http://akinliu.github.io/2014/05/03/cocoapods-specs-/)的人在gitcafe(http://gitcafe.com/)和occhina(http://www.oschina.net/)上建立了CocoaPods索引库的镜像,因为gitcafe和occhina都是国内服务器,所以执行索引更新操作时,会快很多,如下操作将CocoaPods设置成使用gitcafe镜像:
pod repo remove master
pod repo add master https://gitcafe.com/akuandev/Specs.git
pod repo update
把https://gitcafe.com/akuandev/Specs.git 替换成http://git.oschina.net即可使用occhina上的镜像。
三、使用CocoaPods
使用时需要新建一个名为Podfile的文件,如以下的格式,将依赖的库名字依次列在文件中即可:
source ‘https://github.com/CocoaPods/Specs.git‘#官方仓库地址
platform :ios, ‘9.0’
use_frameworks!
target ‘SaTingText’ do
pod ‘AFNetworking’, ‘~> 3.1.0’
end
注意这个target 是工程的名字不要写错!!!Podfile文件名字只能是Podfile!!!
然后将编辑好的Podfile文件放到项目的根目录下,执行下面的命令:
cd”your project home”
pod install
现在,所有的第三方库都已经下载完成了并且设置好了编译参数和依赖,你只需要记住下面两点即可:
1.使用CocoaPods生成的.xcworkspace 文件来打开你的工程,而不是原来的.xcodeproj文件。
2.每次你想添加第三方库更改Podfile文件,都要重新执行一次pod update 命令。
四、查找第三方库
如果不知道CocoaPods管理的库中是否有你想要的库,那么你就可以通过pod search 命令进行查找,以下是我用pod search json查找到的所有可用的库:
-> 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]
-> Json-Qqc (1.0.80)
Json-Qqc
pod ‘Json-Qqc’, ‘~> 1.0.80’
- Homepage: https://github.com/xukiki/Json-Qqc
- Source: https://github.com/xukiki/Json-Qqc.git
- Versions: 1.0.80 [master repo]
-> JSON-Schema-Test-Suite (1.1.2-Pod)
… 省略若干行
五、注意事项
1.关于.gitignore
当你执行 pod install 之后,除了Podfile外,CocoaPods还会生成一个名为Podfile.lock的文件,你不应该把这个文件加到你的.gitignore忽略掉。因为Podfile.lock会锁定当前各依赖库的版本,之后即使多次执行pod install也不会更改版本,只有执行pod update才会改变Podfile.lock。在多人团队协作的时候,这样可以防止第三方库升级是造成大家各自的第三方库版本不一致。
2.为自己的项目创建podspec文件
我们可以为自己的开源项目创建podspec文件,首先通过如下命令初始化一个podspec文件:
pod spec create your_pod_spec_name
该命令执行后,CocoaPods会生成一个名为your_pod_spec_name.podspec的文件,然后我们修改其中的相关内容即可。
具体步骤大家可以百度一下~由于篇幅过长这边就不做过多介绍。
3.使用私有的pods
我们可以直接指定某一个依赖的podspec,这样就可以使用企业内部的私有库。该方案有利于使用企业内部的公共项目支持CocoaPods,例如:
pod ‘TMCode’ , :podspec => ‘https://yuantiku.com/common/myCommon.podspec’
4.不更新podspec
CocoaPods 在执行pod install 和pod update时,会默认先更新一次podspec索引。使用–no-repo-update 参数可以紧致其做索引更新操作。代码如下所示:
pod install –no-repo-update
pod update –no-repo-update
5.生成第三方库帮助文档
如果你想让CocoaPods帮你生成第三方库的帮助文档,并集成到xcode中,那么用brew安装appledoc即可:
brew install appledoc
关于appledoc,它的最大的优点是可以将帮助文档集成到xcode中,这样你在敲代码的时候,按住Option键单击类名或者方法名,就可以显示出相应的帮助文档。
六、CocoaPods的原理
CocoaPods的原理将所有的依赖库都放到另一个名为Pods的项目中,然后让主项目依赖Pods项目,这样,源码管理工作就从主项目转移到了Pods项目中。技术细节如下:
1.Pods项目最终会编译成一个名为libPods.a的文件,主项目只需要依赖这个.a文件即可。
2.对于资源文件,CocoaPods提供了一个名为Pods-resources.sh的bash脚本,该脚本在每次项目编译的时候都会执行,将第三方库的各种资源文件复制到目标目录中。
3.CocoaPods通过一个名为Pods.xcconfig的文件在编译时设置所有的依赖和参数。