美文网首页iOS开发
从文档开始了解cocoapods之podfile

从文档开始了解cocoapods之podfile

作者: 二毛的希望 | 来源:发表于2018-11-09 17:34 被阅读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

    相关文章

      网友评论

        本文标题:从文档开始了解cocoapods之podfile

        本文链接:https://www.haomeiwen.com/subject/jgvoxqtx.html