从文档开始了解cocoapods之podfile

概述

最近在学习中,发现了对于cocoapods只是停留在了使用阶段。并没有什么了解。于是乎这个系列诞生了。本系列不讲解如何使用cocoapods,而是通过官方的文档来详细了解一下cocoapods。主要会记录一下三个方面的内容。

一:podfile

1.1 简介

Podfile是一个用来描述xcode项目的依赖的说明书或者规格。长这个样子。


image.png

1.2 根选择(类似于全局配置)

1.2.1 install!

全局配置现在只有一个install!install!标注了pod在整个安装期间安装的方法和选择。
第一个参数是安装所用的方法,第二个参数是用来标记安装选项。当前安装所用的方法就只有一个:’cocoapods’,所以第一个参数就只能用’cocoapods’。未来应该会支持更多的方法。


image.png

1.3 依赖

1.3.1 pod

podfile指明了每一个用户目标的依赖关系。一下 ’ ‘ 都为单引号

1.3.1.1 pod

指明一个工程的依赖关系。一个依赖通过一个pod 名称和一个可选的版本号规定。

    当你想使用一个pod的最新版本的时候,可以忽略后面的版本号。
    比如:pod ‘xxxxxx’
    如果想要在项目中使用一个固定的pod 版本,就需要在后面加入版本号。
    比如:pod ‘xxxxx’, ’0.9’

如果没有指定的版本,也可以使用操作符号:比如如下所示:


image.png

其他的可以不用解释,解释一下>这个操作符,例子中> 0.1.2其实是0.1.2-0.2.0中间的版本,并且不包括0.2.0版本,取这个范围之内最近的一个符合我们要求的版本。
版本号的规定如下:
https://semver.org/lang/zh-CN/ 根据标准。也方便我们以后搭建私有仓库时,对组件进行版本管理。

image.png

1.3.1.2 构建配置

默认情况下,目标所有的构建配置中都安装了依赖项。为了调试或者其他的原因,可以在一个列表中表明在什么环境下可以被使用或者配置。

    pod 'PonyDebugger', :configurations => ['Debug', 'Beta’]

也可以只设置一个模式。

pod 'PonyDebugger', :configuration => ‘Debug’
1.3.1.3 来源

可以重新指定依赖项的源位置,而不使用pod仓库的源的位置。

pod 'PonyDebugger', :source => '[https://github.com/CocoaPods/Specs.git](https://github.com/CocoaPods/Specs.git)’
1.3.1.4 子模块

当通过名称安装pod的时候,将会安装在podspec中配置好的所有的子模块。如果只想安装特定模块,可以使用以下:

pod 'QueryKit/Attribute'

如果想要安装好几个特定的模块,可以指定一个list,如下。

pod 'QueryKit', :subspecs => ['Attribute', 'QuerySet’]
1.3.1.5 使用本地文件

pod 可以指定为本地的源文件。如下

pod 'AFNetworking', :path => '~/Documents/AFNetworking’

cocoapods会假定,我们指定的文件夹就是pod的根目录,会直接从这个根目录编译项目到我们指定的target中,如果我们本地的源文件变化了,那么编译出来的pod也会跟着变化。

 注意:pod的podspec文件应该放在这个文件夹当中,podspec文件是一个配置文件。
1.3.1.6 可以从外部引入podspec

podsepc可以从另外一个库中引入。如下:可以从http中引入。

pod 'JSONKit', :podspec => '[https://example.com/JSONKit.podspec](https://example.com/JSONKit.podspec)’

1.3.2 podspec(pod的配置文件)

使用在podspec中定义的pod的依赖关系。如果没有参数,podspec优先使用根目录。

podspec
//指定名称
podspec :name => 'QuickDialog'
//指定podspec的源。
podspec :path => '/Documents/PrettyKit/PrettyKit.podspec’

1.3.3 target (目标)

根据给定的block定义cocoapods的目标和作用域。目标必须与一个xcode项目相关联。


image.png

1.3.4 脚本 script_phase

可以添加与目标项目集成的脚本。script phase可以执行任意脚本,并且可以在运行期间使用所有xcode的环境变量。如下所示

script_phase :name => 'HelloWorldScript', :script => 'echo "Hello World"'
script_phase :name => 'HelloWorldScript', :script => 'puts "Hello World"', :shell_path => '/usr/bin/ruby’

1.4 目标配置项

这些设置用来控制cocoapods来生成project。

1.4.1 platform(平台)

指定一个静态链接库编译的平台版本。cocoapods提供一个默认的开发平台。当前的是iOS 4.3,OSX 10.6,TVOS 9.0,watchOS 2.0。
如果编译iOS平台<4.3,armv6需要添加ARCHS标识。如下:


image.png

1.4.2 project(工程)

指定一个工程,可以使用cocoapods链接出来的库。如果没有指定,那么就会使用和podfile同一个目录下的project。也可以指定在什么模式下生效。比如release,debug等。


image.png

第一个指定了project,那么cocoapods链接的静态库,就只能在FastGPS中引入。

1.4.3 inhibit_all_warnings(阻止所有警告)

阻止所有cocoapods库中的所有警告。


image.png

1.4.4 use_frameworks!

如果指定了use_frameworks!,就生成framework而不是.a静态库。

1.5 工作区(workspace)

用来罗列出配置workspace的选项并且进行全局设置。

1.5.1 workspace

指定一个包含了所有project的xcode的工作区。
如果没有明确的指明workspace并且在同一个文件夹下有一个podfile,那么这个project的名字就会被workspace用来作为名字。以下可以指定名称。

workspace ‘MyWorkspace'

1.6 Sources(pod源)

默认使用官方的来源。但是也可以自己指定。podfile根据文件中定义的pod和version从源码仓列表中检索spec。当然了,也可以自己标注。自己标注的话,默认会使用最高版本号的。


image.png

1.7 Hooks(钩子)

就是hook一系列的pod的安装过程。比如安装前,或者提交安装前。

1.7.1 pre_install

允许在pod下载完成之后,安装之前做一些操作。如下:


image.png

1.7.2 post_install

允许对即将被写入磁盘的xcode工程做一些改变。


image.png

二:小结

完。

我是二毛,一个集智慧和逗比于一身的iOSer

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