在 Swift 和 Objective-C 项目中使用 CocoaPods

作者:Gregg Mojica,原文链接,原文日期:2016/06/24
译者:saitjr;校对:Cee;定稿:千叶知风

CocoaPods——Swift 与 Objective-C 项目的依赖管理工具,iOS 开发者的必备技能。如果你没有任何 CocoaPods 经历,那么这篇短文就是为你而写。我们将会学到什么是 CocoaPods,为什么我们要使用它,还有怎样开始使用它!

AppCoda 的绝大多数教程写得都很详细,本文要比其他传统教程短,仅作为 CocoaPods 的入门文章。

什么是 CocoaPods

CocoaPods 是 Swift 与 Objective-C 项目的依赖管理工具。如果你曾使用过 Node.js、Ruby on Rails、Python 等,那么你可能对依赖管理工具并不陌生。如果没有了解过,那也没关系!依赖管理工具是用来帮助开发者管理库或包的工具。诸如 CocoaPods 这类依赖管理工具能帮你管理所有库,而不需要一点一点的手动导入。

设想有这样一个场景:你正在开发的 app 需要依赖如 Firebase 这样的第三方库

与此同时,Firebase 又依赖着很多其他第三方库。为了能使用它,你不得不导入 Firebase 和它所依赖的库。手动去导入无疑是一个单调乏味的过程。

这时,CocoaPods 就有用武之地了。它会自动导入需要的库,并添加该库所必须的依赖。下一秒,你就能明白 CocoaPods 有多强大了。

在 Mac 上配置 CocoaPods

CocoaPods 的配置简单而直观,一路打怪升级。首先在终端中输入以下命令来安装 CocoaPods:

bash
# 译者注:在此之前,天朝的朋友们最好先移除原有的 source:

gem sources --remove https://rubygems.org/

# 换成淘宝的:

gem sources -a https://ruby.taobao.org

#Hail GFW !

bash
sudo gem install cocoapods

这句命令会在系统中安装 CocoaPods。CocoaPods 用的是 Ruby 编写,所以它要依赖 OS X 系统自带 Ruby 环境。如果你熟悉 Ruby,其实 Ruby 中的 gems 和 CocoaPods 中的 pods 很像。

这可能会提示你输入密码,输入完按 Enter 就好。注意,密码不会在终端中显示。

这一步会花点时间。耐心点,去喝杯咖啡,等着这一步完成吧。

在 Xcode 项目中使用 CocoaPods

装好 CocoaPods 以后,来看看怎么用吧。我们会创建一个简单的工程,然后示范如何用 CocoaPods 安装 Firebase 库。

首先,创建一个名为 CocoapodsTest 的工程。创建好后,关闭工程,回到终端。使用 cd 命令(修改目录)进入到刚创建的工程中。假设工程保存在桌面上,那命令应该是这样的:

bash
cd ~/Desktop/CocoapodsTest

接下来,我们需要创建一个叫 Podfile 的文件。Podfile 是存在于项目根目录下的一个文件,它负责监控所有你想要安装的 pods 的动向。如果你想要安装或更新 pods,CocoaPods 就会检查一遍 Podfile。

仅需一行代码,就能创建 Podfile:

bash
pod init

CocoaPods 生成 Podfile 像这样:

ruby
# Uncomment this line to define a global platform for your project
# platform :ios, '9.0'
 
target 'CocoapodsTest' do
  # Comment this line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!
 
  # Pods for CocoapodsTest
 
end

这是 Podfile 最基本的结构。你需要做的,就是在里面添加你需要依赖的 pods。我将用 Vim 来编辑这个文件。Vim 是 Mac 內建的文本编辑器,开发者能直接用终端来编辑内容。当然,你也可以用其他文本编辑器,如 Atom。

键入下面的命令,在 Vim 中打开 Podfile 文件:

bash
vim Podfile

假设你项目中需要使用 Firebase 库。那么就像下面这样配置:

ruby
# Uncomment this line to define a global platform for your project
# platform :ios, '9.0'
 
target 'CocoapodsTest' do
  # Comment this line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!
 
  # Pods for CocoapodsTest
  pod 'Firebase'
end

好了,然后退出 Vim。键入一下内容:

bash
:wq

这命令表示:写入并退出。Vim 会保存文件做出的修改。

在介绍最后一步之前,我们先来了解下 Podfile 中其他配置的含义:

  • Podfile 描述了 Xcode 项目某个 Target 所需的依赖。因此,我们需要指定 Target,在这个 demo 中,是 CocoapodsTest
  • use_frameworks 选项是告诉 CocoaPods 使用 framework 而不是静态库。这在 Swift 项目中是必选。
  • 我们添加的那行(pod 'Firebase')是让 CocoaPods 知道我们要用 Firebase。或许你会好奇,我们怎么知道某个库的 pod 名称的。一般情况下,你可以查看文档,或者在 cocoapods.org 搜索。

现在你应该对 Podfile 有更深入的了解了吧。键入下面命令,来完成整个流程吧:

bash
pod install

CocoaPods 现在会安装 Firebase 了!在 Firebase 下载完成后,它会创建一个名为 CocoapodsTest.xcworkspace 的文件。这个 workspace 目录包含了原始 Xcode 工程、Firebase 库与它所需要的依赖。

从现在起,工程入口变成了 CocoapodsTest.xcworkspace,而不是 CocoapodsTest.xcodeproj

打开 Xcode Workspace

如果你通过 CocoapodsTest.xcworkspace 打开工程,你会看到名为 CocoapodsTestPod 的两个项目,其中 Pod 中包含了 Firebase 库。

现在,唯一需要做的,就是引用 Firebase 了。在 Xcode 中找到 ViewController.swift 文件,然后在最上面引入:

import Firebase

瞧瞧!你已经成功用上了 CocoaPods。

最后

CocoaPods 这么棒的工具值得每个 iOS 开发者珍藏。希望这篇教程能帮到你,如果有想法或疑问,欢迎评论。

另外,Apple 正准备发布 Swift 包管理器(Swift Package Manager),它和 CocoaPods 非常像,而且它直接内置在了 Swift 环境中,自动进行依赖管理。Swift 包管理器将在这个版本中发布。等官方发布后,我们再来讨论讨论。敬请关注

(译者注:翻译组其他文章推荐: 《在团队开发中使用 CocoaPods 的小技巧》)

本文由 SwiftGG 翻译组翻译,已经获得作者翻译授权,最新文章请访问 http://swift.gg

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,117评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,963评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,897评论 0 240
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,805评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,208评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,535评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,797评论 2 311
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,493评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,215评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,477评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,988评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,325评论 2 252
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,971评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,807评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,544评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,455评论 2 266

推荐阅读更多精彩内容

  • 本文由yake_099(博客)翻译自raywenderlich,作者:Joshua Greene 原文:How t...
    东引瓯越阅读 1,944评论 0 49
  • CocoaPods 是什么? CocoaPods 是一个负责管理 iOS 项目中第三方开源库的工具。CocoaPo...
    朝洋阅读 25,473评论 3 51
  • 一、什么是CocoaPods CocoaPods是iOS项目的依赖管理工具,该项目源码在Github上管理。开发i...
    公子无礼阅读 969评论 0 1
  • “第一次看你不太顺眼,谁知道后来关系那么密切,我们一个像夏天一个像秋天,却能把每个冬天变成了春天。”歌词里的故...
    yumi蜜阅读 227评论 0 1
  • 一 A君今年32岁,在一家IT公司做程序员。这一天他忙完最后一行代码,打开日程表上看了看晚上的安排,是一场相亲。 ...
    江南的故事酒馆阅读 254评论 0 1