将Pod添加到Xcode项目中
在你开始之前
- 检查Specs存储库或cocoapods.org以确保您要使用的库可用。
- 在您的计算机上安装CocoaPods。
安装
- 创建Podfile,并添加依赖项:
1 target 'MyApp' do 2 pod 'AFNetworking', '~> 3.0' 3 pod 'FBSDKCoreKit', '~> 4.9' 4 end
$ pod install
在项目目录中运行。- 打开
App.xcworkspace
并构建。
使用CocoaPods创建一个新的Xcode项目
要使用CocoaPods创建新项目,请按照以下简单步骤操作:
- 像往常一样在Xcode中创建一个新项目。
- 打开终端窗口,然后
$ cd
进入项目目录。 - 创建Podfile。这可以通过运行来完成
$ pod init
。 - 打开你的Podfile。第一行应指定支持的平台和版本。
platform :ios, '9.0'
- 为了使用CocoaPods,您需要定义Xcode目标以将它们链接到。因此,例如,如果您正在编写iOS应用程序,那么它将是您的应用程序的名称。通过书写
target '$TARGET_NAME' do
和end
之后的几行创建目标部分。 - 通过
pod '$PODNAME'
在目标块内的单行指定来添加CocoaPod 。
1 target 'MyApp' do 2 pod 'ObjectiveSugar' 3 end
- 保存您的Podfile。
- 运行
$ pod install
- 打开
MyApp.xcworkspace
创建的。这应该是您每天用来创建应用程序的文件。
与现有工作区集成
将CocoaPods与现有工作空间集成需要在Podfile中添加一行。只需.xcworkspace
在目标块外部指定文件名,如下所示:
workspace 'MyWorkspace'
何时使用pod install
vs pod update
?
许多人对何时使用pod install
以及何时使用感到困惑pod update
。特别是,他们经常使用pod update
他们应该使用的地方pod install
。
您可以在本专用指南中找到有关何时使用每个命令以及每个命令的预期用途的详细说明。
我应该将Pods目录检查到源代码管理中吗?
无论您是否签入Pods
文件夹都取决于您,因为工作流程因项目而异。我们建议您将Pods目录保留在源代码管理下,不要将其添加到您的.gitignore
。但最终这个决定取决于你:
检查Pods目录的好处
- 克隆了repo之后,即使没有在机器上安装CocoaPods,项目也可以立即构建和运行。无需运行
pod install
,也无需Internet连接。 - Pod工件(代码/库)始终可用,即使Pod的源(例如GitHub)发生故障也是如此。
- 克隆回购后,Pod工件保证与原始安装中的工件相同。
忽略Pods目录的好处
- 源控件仓库将更小并占用更少的空间。
- 只要所有Pod的源(例如GitHub)都可用,CocoaPods通常能够重新创建相同的安装。(从技术上讲,无法保证
pod install
在Podfile中不使用提交SHA时,运行将获取并重新创建相同的工件。在Podfile中使用zip文件时尤其如此。) - 执行源代码控制操作时不会有任何冲突,例如合并具有不同Pod版本的分支。
无论你是否在检查Pods
目录,Podfile
并Podfile.lock
应始终版本控制下保持。
什么是Podfile.lock
?
此文件在第一次运行后生成pod install
,并跟踪已安装的每个Pod的版本。例如,假设Podfile中指定了以下依赖项:
pod 'RestKit'
Running pod install
将安装当前版本的RestKit,导致Podfile.lock
生成一个指示安装的确切版本(例如RestKit 0.10.3
)。多亏了Podfile.lock
,pod install
即使有更新的版本,在不同的机器上运行这个假设项目仍然会安装RestKit 0.10.3。CocoaPods将尊重Pod版本,Podfile.lock
除非在Podfile中更新依赖项或pod update
调用它(这将导致Podfile.lock
生成新的)。通过这种方式,CocoaPods避免了由依赖性的意外更改引起的头痛。
谷歌有一个关于它如何工作的精彩视频:“CocoaPods和Lockfiles(Route 85)”。
幕后发生了什么?
在Xcode中,直接来自ruby源的引用,它:
- 创建或更新工作区。
- 如果需要,将项目添加到工作区。
- 如果需要,将CocoaPods静态库项目添加到工作空间。
- 将libPods.a添加到:targets => build phases =>与库链接。
- 将CocoaPods Xcode配置文件添加到您应用的项目中。
- 将应用程序的目标配置更改为基于CocoaPods。
- 添加构建阶段以将资源从您安装的任何pod复制到应用程序包。即在所有其他构建阶段之后的“脚本构建阶段”,具有以下内容:
1 Shell: /bin/sh 2 Script: ${SRCROOT}/Pods/PodsResources.sh
请注意,如果CocoaPods静态库已经在您的项目中,则跳过步骤3以后的步骤。这很大程度上基于乔纳威廉姆斯在静态图书馆的工作。
Pods和Submodules
CocoaPods和git子模块试图解决非常类似的问题。两者都努力简化在项目中包含第三方代码的过程。子模块链接到该项目的特定提交,而CocoaPod与版本化的开发人员版本相关联。
从子模块切换到CocoaPods
在决定完全切换到CocoaPods之前,请确保您当前使用的库都可用。记录当前使用的库的版本也是一个好主意,这样您就可以设置CocoaPods使用相同的库。以增量方式执行此操作也是一个好主意,依赖于依赖而不是一个大动作。
- 安装CocoaPods,如果你还没有这样做的话
- 创建Podfile
- 删除子模块引用
- 在Podfile中添加对已删除库的引用
- 启动
pod install