使用 CocoaPods

将 Pod 添加到Xcode 工程

开始之前
  • 检查Specs repository 或者 cocoapods.org 以确保想使用的库可用.
  • 在电脑上安装 CocosPods
安装
  • 创建 Podfile,并且添加依属关系
target 'MyApp' do
pod 'AFNetworking', '~> 3.0'
pod 'FBSDKCoreKit', '~> 4.9'
end
  • 在项目工程目录运行:
$ pod install in your project directory.
  • 打开 App.xcworkspace ,然后 build

用CocoaPods创建一个新的Xcode项目

要使用CocoaPods创建一个新项目,请遵循以下步骤:

  • 在 Xcode 中创建一个新的项目
  • 打开终端 (terminal) cd 到你的工程目录
  • 创建一个Podfile。 这可以通过运行$ pod init来完成。
  • 打开你的Podfile。 第一行应指定支持的平台和版本。
platform :ios, '9.0'
  • 为了使用CocoaPods,你需要定义Xcode目标 (Xcode target) 来链接它们。 例如,如果你正在编写一个iOS应用程序,它将是你的应用程序的名称。 通过编写目标'$ TARGET_NAME'创建一个目标部分,然后在后面几行添加结束(end)。( Create a target section by writing target '$TARGET_NAME' do and an end a few lines after.)
  • 通过在目标块内的单行上指定pod'$ PODNAME'来添加CocoaPod。
target 'MyApp' do
pod 'ObjectiveSugar'
end
  • 保存你的 Podfile
  • 运行$ pod install
  • 打开创建的MyApp.xcworkspace。 这应该是您每天用来创建应用程序的文件。

与现有的工程集成

将CocoaPods与现有的工作空间集成需要在你的Podfile中增加一行。 只需在目标块外部指定.xcworkspace文件名,如下所示:

workspace 'MyWorkspace'

何时使用 pod install 何时使用 pod update

很多人对何时使用 pod install 以及何时使用 pod update 感到困惑。 尤其是,他们经常使用 pod update,而不是使用 pod install
您可以在指南(何时使用 pod install 何时使用 pod update)中找到有关何时使用每种命令的详细说明以及每个命令的预期用法。

我应该检查Pods目录到源代码控制吗?(连同 Pods 一起更新到代码库中?)

您是否签入Pods文件夹取决于您,因为工作流程因项目而异。 我们建议您将Pods目录保持在源代码管理下,并且不要将其添加到.gitignore中。 但最终这个决定取决于你:

检查Pods目录的好处
  • clone repo 之后,即使没有在机器上安装CocoaPods,项目也可以立即生成并运行。 没有必要运行pod安装,并且不需要Internet连接。
  • Pod工件(代码/库)始终可用,即使Pod(例如GitHub)的源停止工作。
  • clone repo 回购之后,Pod工件保证与原始安装中的相同。

忽略Pods目录的好处

  • 源代码控制 repo 将更小,占用更少的空间。
  • 只要所有Pod的源代码(例如GitHub)可用,CocoaPods通常都可以重新创建相同的安装。 (从技术上讲,不能保证在Podfile中不使用提交SHA时,运行Pod安装将获取并重新创建相同的工件,在Podfile中使用zip文件时尤其如此。)
  • 执行源代码控制操作时不会出现任何冲突,例如合并具有不同Pod版本的分支。
无论您是否检入Pods目录,Podfile和Podfile.lock都应始终保持在版本控制之下。

无论您是否检入Pods目录,Podfile和Podfile.lock都应始终保持在版本控制之下。

什么是Podfile.lock

此文件在第一次运行pod安装后生成,并跟踪已安装的每个Pod的版本。 例如,想象在Podfile中指定的以下依赖项:

pod 'RestKit'

运行 pod 安装将安装当前版本的 RestKit ,从而生成一个 Podfile.lock ,指出安装的确切版本(例如 RestKit 0.10.3). 在稍后的时间点在另一台计算机上对此假设项目运行 pod install 仍会安装 RestKit 0.10.3 ,即使有更新的版本可用. 除非在 Podfile 中更新依赖项或调用了pod update(这将导致生成新的 Podfile.lock ),否则 CocoaPods 将遵循 Podfile.lock 中的 Pod 版本. 通过这种方式,CocoaPods 避免了因依赖关系发生意外更改而导致的麻烦。

幕后发生了什么

在Xcode中,直接从ruby源代码引用:

  • 创建或更新工作区。
  • 如果需要,将您的项目添加到工作区。
  • 如果需要,将CocoaPods静态库项目添加到工作区。
  • 将libPods.a添加到:targets => build phases =>链接库。
  • 将CocoaPods Xcode配置文件添加到您的应用程序项目中。
  • 将应用的目标配置更改为基于CocoaPods的配置。
  • 添加构建阶段( build phase),从你安装的 Pods 中 copy 资源到你应用包 (app bundle) 中.在其他的所有构建(build phase)阶段之后的添加脚本阶段有一下内容:
    1. Shell: /bin/sh
    2. Script: ${SRCROOT}/Pods/PodsResources.sh

请注意,如果CocoaPods静态库已经在您的项目中,则跳过步骤3。 这主要基于Jonah Williams在静态库上的工作。

Pods and Submodules

CocoaPods和git子模块试图解决非常类似的问题。 都努力简化在您的项目中包含第三方代码的过程。 子模块链接到该项目的特定提交,而CocoaPod绑定到版本化的开发人员版本。

从 Submodules 切换到 CocoaPods

在决定完全切换到CocoaPods之前,请确保您当前使用的库全部可用。 记录你当前使用的库的版本也是一个好主意,这样你可以设置CocoaPods使用相同的版本。 逐步做到这一点也是一个好主意,依赖性依赖而不是一个重大举措。

  • Install CocoaPods .(如果没有安装, 请提前安装好)
  • 创建你的Podfile
  • 删除 submodule reference
  • 在Podfile中添加对已移除库的引用
  • 运行 pod install

你可能感兴趣的:(使用 CocoaPods)