iOS开发

从文档开始了解cocoapods之podfile

2018-11-09  本文已影响337人  二毛的希望

概述

最近在学习中,发现了对于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

上一篇下一篇

猜你喜欢

热点阅读