CocoaPods使用


CocoaPods 是 Swift 和 Objective-C Cocoa 项目的依赖管理器。它拥有超过 89,000 个库,用于超过 300 万个应用程序。CocoaPods 可以帮助您优雅地扩展您的项目。

CocoaPods 管理 Xcode 项目的库依赖项。

项目的依赖项在称为 Podfile 的单个文本文件中指定。CocoaPods 将解析库之间的依赖关系,获取生成的源代码,然后在 Xcode 工作区中将它们链接在一起以构建您的项目。

最终目标是通过创建一个更加集中的生态系统来提高第三方开源库的可发现性和参与度。

入门

安装

CocoaPods 是用 Ruby 构建的,并且可以使用 macOS 上可用的默认 Ruby 进行安装。我们建议您使用默认的 ruby​​。

  1. 使用默认的 Ruby 安装可能需要您sudo在安装 gems 时使用
$ sudo gem install cocoapods

更新CocoaPods

要更新 CocoaPods,您只需再次安装 gem

$ sudo gem install cocoapods

pod安装与pod更新

注意:installvs . 的词汇update实际上并不特定于 CocoaPods。它受到许多其他依赖管理器的启发,例如bundlerRubyGemscomposer,它们具有类似的命令,具有与本文档中描述的完全相同的行为和意图。

pod install

这将在您第一次要检索项目的 pod 时使用,也可以在您每次编辑 Podfile 以添加、更新或删除 pod 时使用。

  • 每次pod install运行命令时——并下载和安装新的 Pod——它都会在文件中写入它为每个 Pod 安装的版本Podfile.lock。此文件跟踪每个 pod 的已安装版本并锁定这些版本

  • 当您运行时**,**pod install它只会解析. Podfile.lock

    • 对于 中列出的 pod Podfile.lock,它会下载 中列出的显式版本,Podfile.lock而不尝试检查是否有更新的版本可用

    • 对于尚未列出的 pod Podfile.lock,它会搜索与Podfile(如pod 'MyPod', '~>1.2')中描述的版本相匹配的版本

pod outdated

当您运行pod outdated时,CocoaPods 将列出所有具有比Podfile.lock(当前每个 pod 安装的版本)中列出的版本更新的版本的 pod。这意味着如果您在这些 pod 上运行pod update PODNAME,它们将被更新——只要新版本仍然符合Podfile中设置的pod 'MyPod', '~>x.y'等限制。

pod update

运行pod update PODNAME时,CocoaPods 会尝试查找pod PODNAME 的更新版本,而不考虑Podfile.lock中列出的版本。它会将 pod 更新到可能的最新版本(只要它符合您的版本限制Podfile)。

如果您在pod update没有 pod 名称的情况下运行,CocoaPods 会将您列出的每个 pod 更新Podfile到可能的最新版本。

预期用途

使用pod update PODNAME,您将只能更新特定的 pod(检查是否存在新版本并相应地更新 pod)。与之相反,pod install它不会尝试更新已安装的 pod 版本。

当你向你的 Podfile 添加一个 pod 时,你应该运行pod install,而不是pod update– 这样来安装这个新的 pod,而不会有在同一进程中更新现有 pod 的风险。

仅当您要更新特定 pod(或所有 pod)的版本时才会使用pod update

提交你的Podfile.lock

提醒一下,即使您的策略是不将该Pods文件夹提交到您的共享存储库中,您也应该始终提交并推送您的Podfile.lock文件。

否则,它将破坏上面解释的关于pod install能够锁定已安装的 pod 版本的整个逻辑。

使用CocoaPods

将 Pod 添加到 Xcode 项目

在你开始之前

  1. 检查Specs存储库或cocoapods.org以确保您想要使用的库可用。

  2. 在您的计算机上安装 CocoaPods 。

安装

  • 创建一个Podfile,并添加您的依赖项:
target 'MyApp' do
  pod 'AFNetworking', '~> 3.0'
  pod 'FBSDKCoreKit', '~> 4.9'
end
  • 在您的项目目录中运行$ pod install

  • 打开App.xcworkspace并构建。

使用 CocoaPods 创建一个新的 Xcode 项目

要使用 CocoaPods 创建一个新项目,请按照以下简单步骤操作:

  • 像往常一样在 Xcode 中创建一个新项目。

  • 打开一个终端窗口,并$ cd进入您的项目目录。

  • 创建一个 Podfile。这可以通过运行来完成$ pod init

  • 打开你的 Podfile。第一行应指定支持的平台和版本。

platform :ios, '9.0'
  • 为了使用 CocoaPods,您需要定义 Xcode 目标以将它们链接到。因此,例如,如果您正在编写一个 iOS 应用程序,它将是您的应用程序的名称。通过写作target '$TARGET_NAME' doend几行之后创建一个目标部分。

  • pod '$PODNAME'通过在目标块内的单行上指定来添加 CocoaPod 。

target 'MyApp' do
  pod 'ObjectiveSugar'
end
  • 保存 Podfile。

  • 运行$ pod install

  • 打开创建的MyApp.xcworkspace

现有Project集成

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

workspace 'MyWorkspace'

源代码管理Pods 目录

签入 Pods 目录的好处

  • 克隆 repo 后,项目可以立即构建和运行,即使机器上没有安装 CocoaPods。无需运行pod install,也无需联网。

  • Pod 工件(代码/库)始终可用,即使 Pod 的源(例如 GitHub)出现故障。

  • 克隆 repo 后,Pod 工件保证与原始安装中的工件相同。

忽略 Pods 目录的好处

  • 源代码控制 repo 会更小,占用更少的空间。

  • 只要所有 Pod 的源(例如 GitHub)都可用,CocoaPods 通常能够重新创建相同的安装。(从技术上讲,不保证pod install在 Podfile 中不使用提交 SHA 时,运行将获取并重新创建相同的工件。在 Podfile 中使用 zip 文件时尤其如此。)

  • 执行源代码控制操作时不会有任何冲突需要处理,例如合并具有不同 Pod 版本的分支。

无论您是否签入Pods目录,PodfileandPodfile.lock都应始终处于版本控制之下。

Podfile.lock

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

pod 'RestKit'

运行pod install将安装当前版本的 RestKit,从而生成一个Podfile.lock文件 ,指示安装的确切版本(例如RestKit 0.10.3)。多亏了Podfile.lock,即使有更新的版本可用,这个项目在另一台机器上运行pod install仍将安装 RestKit 0.10.3。pod installCocoaPods将在Podfile.lock中的Pod版本,除非依赖项在 Podfile 中更新或被pod update调用(这将导致Podfile.lock生成新的)。通过这种方式,CocoaPods 避免了因依赖项发生意外更改而引起的头痛。

Google 有一个很棒的视频介绍了它的工作原理:“CocoaPods and Lockfiles (Route 85)”

幕后发生了什么?

在 Xcode 中,使用直接来自ruby​​ 源的引用,它:

  1. 创建或更新工作区

  2. 如果需要,将您的项目添加到工作区。

  3. 如果需要,将CocoaPods 静态库项目添加到工作区。

  4. 将 libPods.a 添加到:targets => build phases => link with libraries.

  5. 将 CocoaPods Xcode 配置文件添加到项目中。

  6. 将应用的目标配置更改为基于 CocoaPods 的配置。

  7. 添加构建阶段以将资源从您安装的任何 pod 复制到应用程序包。即在所有其他构建阶段之后的“脚本构建阶段”,具有以下内容:

    1. Shell:/bin/sh

    2. Script:${SRCROOT}/Pods/PodsResources.sh

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

Pod 和子模块

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

从子模块切换到 CocoaPods

在您决定完全切换到 CocoaPods 之前,请确保您当前使用的库都可用。记录您当前使用的库的版本也是一个好主意,以便您可以设置 CocoaPods 以使用相同的库。渐进式地执行此操作也是一个好主意,逐个依赖而不是一个大动作。

  1. 安装 CocoaPods

  2. 创建你的Podfile

  3. 删除子模块引用

  4. 在 Podfile 中添加对已删除库的引用

  5. 执行pod install

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值