CocoaPods 安装和使用

CocoaPods 是一个管理第三方库并解决库之间依赖关系的工具。本文主要介绍 CocoaPods 安装和简单使用

CocoaPods 安装

  • 更新gem
$ sudo gem update --system
  • 替换 Ruby 源
$ gem sources --remove https://rubygems.org/
$ gem sources -a https://ruby.taobao.org/
$ gem source -l 
*** CURRENT SOURCES ***

https://ruby.taobao.org/

如果显示上面的结果就比较替换成功了

  • 安装 CocoaPods
    环境都准备好了,就可以安装,也使用命令
$ sudo gem install cocoapods
$ pod setup

以上就是安装 CocoaPods 最重要的三个步骤,顺利的话就是安装成功。
但是在安装到最后一步,感觉命令窗口就卡住了。

Setting up CocoaPods master repo

在我以为是卡住的时候多次kill进程重来,发现结果是一样。Google一圈之后发现不是卡住了,pod setup第一次运行需要下载一个 master 文件。不是卡住是一直在下载程序,也可以用命令来查看下载进度.

$ cd ~/.cocoapods
$ du -sh *

最后文件大小为386M,下载完成后

Setting up CocoaPods master repo

CocoaPods 1.2.0.beta.3 is available.
To update use: `sudo gem install cocoapods --pre`
[!] This is a test version we'd love you to try.

For more information, see https://blog.cocoapods.org and the CHANGELOG for this version at https://github.com/CocoaPods/CocoaPods/releases/tag/1.2.0.beta.3

Setup completed

以上表示安装 CocoaPods 成功了。

CocoaPods 使用

  • 在项目的根目录下创建一个文件 Podfile
$ vim Podfile
  • 在文件 Podfile 中要添加的想要的第三方库文件,比如:SDWebImage
platform :ios, '8.0'
pod 'SDWebImage', '~> 3.8'

  • 进入项目根目录执行
$ pod install

执行成功之后,输出如下:

Analyzing dependencies
Downloading dependencies
Installing SDWebImage (3.8.2)
Generating Pods project
Integrating client project

[!] Please close any current Xcode sessions and use `MKSwiftControls.xcworkspace` for this project from now on.
Sending stats
Pod installation complete! There is 1 dependency from the Podfile and 1 total pod installed.

pod installl 执行成功之后发现 ~/.CocoaPods/repos/master 文件的大小由 386M 变成 958M

CocoaPods的原理是将所有的依赖库都放到另一个名为Pods的项目中,然后让主项目依赖Pods项目,这样,源码管理工作都从主项目移到了Pods项目中。Pods项目最终会编译成一个名为libPods.a的文件,主项目只需要依赖这个.a文件即可。

基于以上的原理, master 文件会在第一次 pod install 之后会变大

以上是 CocoaPods 基本使用,如果都正确输出了,Happy Ending !!! 下面就不用看了!!!


在写好Podfile执行命令Pod install后,命令行输出错误

Analyzing dependencies
[!] The dependency `SDWebImage (~> 3.8)` is not used in any concrete target.

提示没有指定一个 target ,一再修改 Podfile 之后,最后 Podfile 版本

platform :ios, '8.0'

target 'MKSwiftControls' do
    use_frameworks! 
    pod 'SDWebImage', '~> 3.8'
end

以上可以执行成功,除了指定了一个 target ,还添加了 use_framworks!

use_framworks! 又是什么?

SDWebImage的GitHub主页,关于 CocoaPods 使用作者添加了一些说明

If you are using Swift, be sure to add use_frameworks! and set your target to iOS 8+:

platform :ios, '8.0'
use_frameworks!

先看 Pod install 执行之后,项目文件的变化

  • 修改了 project.pbxproj 文件的内容将原来的文件格式转化为XML文件格式

  • 添加了一个 工程名.xcworkspace 的工作空间

  • 将原来的工程和新的 Pods 工程放到了同一个工作空间

iOS 8 之前苹果只允许使用静态库,而 iOS 8 后就可以打包动态库了,虽然最后也是生成动态库。

使用 use_framworks! 就是选择使用动态库来封装。

项目 target 的配置选项变化

  • RunPath Search Path 搜索路径设置为 @executable_path/Frameworks

  • C 和 C++ 编译器搜索路径设置是相同的

  • 添加对另一个工程 Pods_工程名.framework 的依赖,添加链接器选项为framework

  • Pods-工程名-frameworks.shPods-工程名-resources.sh ,这两个文件实际上就是将封装通用架构动态库文件和将动态库复制到 Bundle 指定目录下。

上面这些都是 CocoaPods 已经给配置好了,不需要自己额外的操作。但是对于还要兼容 iOS 7 及以下版本的项目是不能使用 use_framworks! 还是需要自己手动配置的!

http://blog.devtang.com/2014/05/25/use-cocoapod-to-manage-ios-lib-dependency/

https://segmentfault.com/a/1190000005041357

https://gold.xitu.io/post/58730a25a22b9d0058971144

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

推荐阅读更多精彩内容

  • 高原的夏日,最高温度25度,没有朋友圈中的世界那般燥热难耐。傍晚时分,踏着夕阳回到自己的小房子,下楼梯的时...
    橘喵先森阅读 421评论 0 0
  • 平台战略平台的好处a. 促进沟通和协作,重组产业链b. 提供额外的价值如何成为平台a. 建立多边市场b. 网络效应...
    Albert_Mo阅读 304评论 0 0
  • 我们中国的家长是全世界最伟大的家长这是事实,中国的家长为孩子付出的是最多的。从孩子一出生开始的选奶粉,选幼儿园,选...
    Jane老师阅读 5,548评论 1 6
  • 我曾经做过这样一个梦,梦里的我即将毕业离开这个我生活了四年的学校,那一刻的的我突然好舍不得这里,像是把什么宝贝落在...
    零度是冷还是热阅读 686评论 0 0
  • 心情不好,工业的不顺利,学习的压力,生活的苦劳。没朋友述说,没人理解。心烦意乱!一种悲哀充满了头脑中。
    恩晓晨阅读 151评论 0 0