上一章CocoaPods教程请查看:pod install和pod update
向Xcode项目添加pod在你开始之前
- 检查Specs repository或cocoapods.org,以确保你想使用的库是可用的。
- 在你的电脑上安装CocoaPods。
- 创建一个Podfile,并添加你的依赖:
target 'MyApp' do
pod 'AFNetworking', '~> 3.0'
pod 'FBSDKCoreKit', '~> 4.9'
end
- 在项目目录中运行$ pod install。
- 打开App.xcworkspace并构建。
- 像往常一样在Xcode中创建一个新项目。
- 打开终端窗口,使用$ cd切换到项目目录。
- 创建一个Podfile,这可以通过运行$ pod init来实现。
- 打开你的Podfile,第一行应该指定支持的平台和版本。
platform :ios, '9.0'
若是OS X平台,基本标识为osx,如platform :osx, ‘ 10.6’ 。
- 为了使用CocoaPods,你需要定义Xcode target来链接它们。例如,如果你在写一个iOS应用程序,它会是你的应用程序的名字。通过写target ‘ $TARGET_NAME’ do来创建一个目标部分,并在几行之后以end结束。
- 通过在target块的单行上指定pod ‘ $PODNAME’ 来添加CocoaPod。
target 'MyApp' do
pod 'JSKit', '~> 2.0'
end
- 保存Podfile。
- 运行$ pod install。
- 打开创建的MyApp.xcworkspace,这应该是你每天用来创建你的应用程序的文件。
workspace 'MyWorkspace'
什么时候使用pod install和pod update?许多人对何时使用pod install和何时使用pod update感到困惑。特别是,他们经常使用pod update,而不是使用pod install。
在上一个教程中,你可以找到关于何时使用每个命令以及每个命令的用途的详细说明。
我应该把Pods目录签入源代码控制吗?是否签入Pods文件夹由你自己决定,因为不同项目的工作流程不同。我们建议你将Pods目录置于源代码控制之下,不要将它添加到你的.gitignore中。但最终决定权在你:
签入Pods目录的好处
- 在克隆repo之后,项目可以立即构建和运行,甚至不需要在机器上安装CocoaPods。不需要运行pod install,也不需要网络连接。
- Pod组件(代码/库)总是可用的,即使Pod的来源(例如GitHub)出现故障。
- 保证Pod组件与克隆repo后的原始安装中的组件相同。
- 源代码控制repo将更小,占用更少的空间。
- 只要所有pod的来源(例如GitHub)都是可用的,CocoaPods通常能够重新创建相同的安装。(在技术上,当没有在Podfile中使用commit SHA时,不能保证运行pod安装将获取和重新创建相同的工件。在使用Podfile中的zip文件时尤其如此。)
- 在执行源代码控制操作(例如合并具有不同Pod版本的分支)时,不会有任何冲突需要处理。
Podfile.lock是什么?这个文件是在第一次运行pod安装之后生成的,并跟踪每个安装的pod的版本。例如,想象一下以下在Podfile中指定的依赖项:
pod 'RestKit'
运行pod install将安装RestKit的当前版本,从而生成一个Podfile.lock,表明安装的确切版本(例如RestKit 0.10.3)。因为有Podfile.lock,运行pod install在这个假设的项目上,稍后在不同的机器上安装,即使有更新的版本,仍然会安装RestKit 0.10.3。CocoaPods遵循在Podfile.lock文件中指定的依赖版本,除非在Podfile中更新了依赖项,或者调用了pod update(这会导致生成一个新的Podfile.lock)。通过这种方式,CocoaPods避免了依赖关系的意外变化带来的麻烦。
CocoaPods后台发生了什么事?在Xcode中,直接引用ruby源代码:
- 创建或更新工作空间。
- 如果需要,将项目添加到工作空间。
- 如果需要,将CocoaPods静态库项目添加到工作空间中。
- 添加libPods.a到:target=>build phases构建阶段=>link with libraries。
- 将CocoaPods Xcode配置文件添加到应用程序的项目中。
- 改变你的应用程序的target配置为基于CocoaPods的。
- 添加一个构建阶段,将你安装的任何pod中的资源复制到应用程序包中。即在所有其他构建阶段之后的“script build phase”,包括以下内容:
- shell:/bin/sh
- script:${SRCROOT}/Pods/PodsResources.sh
Pods和子模块CocoaPods和git子模块试图解决非常相似的问题,两者都致力于简化项目中包含第三方代码的过程。子模块链接到该项目的特定提交,而CocoaPod则绑定到版本化的开发人员版本。
从子模块切换到CocoaPods【CocoaPods使用详细步骤解释 – CocoaPods教程】在决定完全切换到CocoaPods之前,请确保当前使用的库都是可用的。记录当前使用的库的版本也是一个好主意,这样就可以设置cocoapod来使用相同的库。渐进地做这个也是一个好主意,一个依赖一个依赖地去做,而不是一个大的移动。
- 安装CocoaPods,如果你还没有安装的话
- 创建你的Podfile
- 删除子模块引用
- 在你的Podfile中添加已删除库的引用
- 运行pod install。
推荐阅读
- Podfile文件解释和使用 – CocoaPods教程
- pod install和pod update – CocoaPods教程
- 安装和使用CocoaPods – CocoaPods教程
- Objective-C内存管理详细解释 – Objective-C开发教程
- Objective-C快速枚举用法 – Objective-C开发教程
- Objective-C泛型介绍和用法 – Objective-C开发教程
- Objective-C Foundation框架全解 – Objective-C开发教程
- Objective-C复合对象解析 – Objective-C开发教程
- Objective-C类型检查和动态绑定详解 – Objective-C开发教程