CocoaPods的使用
将Pods加入一个Xcode Project中
在你开始之前
1.检查Specs仓库或者cocoapod.org来确认你想要用的libraries是可用的
2.在你的电脑安装CocoaPods
安装
创建一个Podfile, 并且加入你的依赖
target 'MyApp' do
pod 'AFNetworking', '~>3.0'
pod 'FBSDKCoreKit','~>4.9'
end
1. 在你的项目路径后面,运行 $ pod install
2.打开 App.xcworkspace 并且 编译
用CocoaPods创建一个新的Xcode 项目
想要用CocoaPods创建一个新项目,按照如下步骤:
1.像你平时那样,在Xcode穿件一个新的项目
2.打开终端,并且 cd 你的项目路径
3.创建一个Podfile。这个是通过运行pod init 来得到的。
4.打开你的Podfile。第一行应该指定支持的平台和版本号。
platform:ios, '9.0'
1.为了使用cocoaPods你需要定义Xcode target去链接他们。所以如果你想写一个iOS app, 这个将会是你app的名字。创建一个target块通过写入target '$TARGET_NAME' do 和在最后写一个end.
2.添加一个CocoaPod通过指定 pod '$PODNAME'在你的target block中的一行。
target 'MyApp' do
pod 'ObjectiveSugar'
end
1.保存你的Podfile
2.运行 pod install
3.打开你创建的MyApp.xcworkspace.这个文件就是以后你每天都要打开的了。
集成一个已经存在的workspace
集成一个已经存在workspace的CocoaPod需要在你的Podfile额外的一行代码。仅仅指定.xcworkspace的文件名字 在你target block块之外就可以:
workspace 'Myworkspace'
什么时候用pod install VC pod update ?
许多人迷惑于设么时候用pod install 和 pod update.典型的是,他们经常用pod update当需要用pod install的地方。
你可找到一个详细的解释关于什么时候用什么在这里 pod install VS. pod update
原文 http://guides.cocoapods.org/using/pod-install-vs-update.html
应该检查Pods目录在Source Control?
无论在Pods文件夹里检查与否都取决于你自己,因为工作流因项目而异。我们推荐你保持Pods目录在源控制下,顶贴不要告你的.gitignore添加进去。但是最后如下讨论取决于你:
检查Pod目录的优势
1.在克隆repo之后,项目就可以很快的编译和运行,即使该设备并没有安装CocoaPods.这里不需要运行pod install, 网络也不是必要的。
2.Pod artifacts(code/libraries)通常是可用的,即使Pod(e.g GitHub)的源下架。
3.在克隆repo后,Pod artifacts保证与原本就安装的相同。
忽视Pod目录优势
1.soure control repo 将会更下并且占用更少的空间。
2.只要所有的Pods源文件(e.g GitHub)是有效的,CocoaPods通常可以重新创建相同的安装。(技术上来讲这并没有保证的是,运行pod install将会fetch和recreate相同的artifacts当你不再Podfile中提交SHA.特别是在Podfile中用zip文件)
3.当执行source control操作,例如merge不同pod版本的分支,这并没有任何冲突去解决。
无论你是否检查Pods目录,Podfile和Podfile.lock一直都在版本控制下。
什么是Podfile.lock?
这个文件是在你第一次运行pod install之后产生的,追踪每一个已经安装的Pod的版本。举个例子,设想在Podfile中有如下的依赖:
pod 'RestKit'
运行pod install会安装RestKit的当前版本,会生成一个Podfile.lock文件指明准确的安装版本号(e.g RestKit 0.10.3).得益于Podfile.lock, �随后在另外一个机器上对该项目运行pod install,即使一个新的版本存在仍旧会安装RestKit 0.10.3.如果不更新Podfile中的依赖或者调用pod update(这个会生成一个新的Podfile.lock),CocoaPods会一直保持Podfile.lock中的版本。在这种方式下,CocoaPods避免了不希望的依赖改变带来的麻烦。
这有一个来自Google的video来展示如何运行的。 "CocoaPods and Lockfiles (Route 85)"
幕后之后发生了什么
在Xcode, 与直接从Ruby源引用,它:
1.创建或者更新一个workspace
2.如果需要把你的project添加到workspace.
3.如果需要把CocoaPods静态库project添加到workspace.
4.添加libPods.a :targets=>build phases =>linke with libraries.
5.把CocoaPods 的Xcode 配置加入到你的app项目中
6.依赖于CocoaPods改变你app的目标配置。
7.添加一个构建阶段,从您安装到应用程序包的任何副本中复制资源。即“脚本构建阶段”,所有其他构建阶段如下:
Shell: /bin/sh
Script:${SRCROOT}/Pods/PodsResources.sh
注意第三步起如果CocoaPods静态库已经在你的项目跳过,这主要基于Jonah Williams对静态库的研究。
Pods 和 Submodules
CocoaPods和git子模块试图解决非常相似的问题。他们都试图简化在你项目中的第三方代码。Submodules链接到该项目的特定提交上面,而CocoaPods绑定到了开发者开发的版本上去。
切换submodules到CocoaPods
当你决定把所有都切换到CocoaPods上,确定你现在使用的所有库都是可用的。记录当前使用的库的版本号也是一个好主意,所以你可以使用同一个安装CocoaPods。这也是一个好主意这样做增量,依赖依托于依赖,取代大的更改。
1.安装CocoaPods.如果你并没有做的话。
2.创建你的Podfile
3.移除submodule索引
4.在Podfile中添加你已经移除的库的索引
5.运行 pod install