基础-简介

作者: coderPoo | 来源:发表于2018-09-04 17:00 被阅读13次

    1. CocoaPods简介

    CocoaPods是一个用来帮助我们管理iOS第三方依赖库的工具。它可以解决库与库之间的依赖关系,目的是让我们能自动化的、集中的、直观的管理第三方开源库。

    CocoaPods的安装和使用

    CocoaPods是用Ruby实现的,要想使用它首先需要有Ruby的环境。幸运的是OS X系统默认的已经可以运行Ruby了,因此我们只需要执行以下命令:

    $ sudo gem install cocoapods
    $ pod setup 
    

    ① 执行完install命令半天没反应

    原因是Ruby的默认源使用的是cocoapods.org,国内访问这个网址有时候会有问题,请替换成Ruby China的源,命令如下:

    $ gem sources --remove https://rubygems.org/ 
    $ gem sources -a https://gems.ruby-china.org/ 
    

    要想验证是否替换成功了,可以执行:

    $ gem sources -l 
    

    正常的输出是:

    *** CURRENT SOURCES *** 
    https://gems.ruby-china.org/
    

    ② gem版本过老

    gem是管理Ruby库和程序的标准包,如果它的版本过低也可能导致安装失败,解决方案自然是升级gem,执行下述命令即可:

    $ sudo gem update --system 
    

    ③ pod setup等待时间太久

    pod setup在执行时,CocoaPods会将托管在https://github.com/CocoaPods/Specs上面的所有项目的Podspec文件更新到~/.cocoapods/目录下,这个文件很大,所有第一次更新会非常慢。方法是直接手动下载到本地,操作如下:

    $ git clone https://git.coding.net/CocoaPods/Specs.git ~/.cocoapods/repos/master --progress
    

    使用

    <span id = "jump"></span>

    创建Podfile文件

    在Xcode项目的根目录下执行命令创建Podfile文件,操作如下:

    $ pod init
    

    Podfile文件的格式如下:

    source 'https://github.com/CocoaPods/Specs'  #源的下载地址
    
    platform :ios, '7.0'                         #支持的ios系统最低版本
    
    pod 'JSONKit', '~> 1.4'                      #第三方库以及版本号
    
    target 'XBPodSDK' do                         #项目的target
        # use_frameworks!
    end
    

    上面的格式比较简单,查看更多详情,请跳转到链接Podfile介绍

    <font color=red>注意:Podfile文件中加入“use_frameworks!”表示打包成framework动态库(ios8之前是静态库),如果没有这个配置,则最终打包成.a静态库</font>

    安装依赖库

    Podfile文件创建完成后,在当前的工程目录下,执行命令来安装依赖库:

    $ pod install
    

    <font color=red>注意:使用CocoaPods生成的.xcworkspace文件来打开工程</font>

    更新依赖库

    当依赖的第三方库升级新版本后,如果Podfile文件指定库为最新版本或者不指定版本,都会更新到最新版。

    ① 全部更新

    如果要使Podfile文件中所有的库都更新到指定版本,需要执行命令如下:

    $ pod update
    

    <font color=red>注意:用“~>”指定的版本是一个范围,并不是特定版本,所有会产生误解(自己指定了版本,为什么pod update会更新到更高的版本)。为了防止这种情况,可以使用“<=”来指定版本。</font>

    直接执行pod update命令,有时会比较慢,这是因为pod会更新本地的版本库,添加参数可以取消更新版本库,如下:

    $ pod update --no-repo-update
    

    <font color=red>注意:这种情况需要保证本地版本库最新。</font>

    ② 更新指定库

    如果想只更新某个依赖库,可以在pod update后面加上库名,如下:

    $ pod update [LIB_NAME] #库的名称
    

    查找第三方库

    如果不知道cocoaPods管理的库中,是否有想要的库,可以通过<font color=red>pod search</font>命令进行查找,以下是用<font color=red>pod search json</font>查找到的所有可用的库:

    -> JSON (5.0.0)
       JSON made so simple, it hurts
       pod 'JSON', '~> 5.0.0'
       - Homepage: https://github.com/3lvis/JSON
       - Source:   https://github.com/3lvis/JSON.git
       - Versions: 5.0.0, 5.0.0-beta1, 4.0.2, 4.0.1, 4.0.0, 3.1.0, 3.0.0, 2.1.1, 2.1.0, 2.0.0 [master repo]
    
    -> json-parser-swift (0.2.0)
       JSON parser & tokenizer in pure Swift
       pod 'json-parser-swift', '~> 0.2.0'
       - Homepage: https://github.com/webconnex/json-parser-swift
       - Source:   https://github.com/webconnex/json-parser-swift.git
       - Versions: 0.2.0, 0.1.1, 0.1.0, 0.0.2, 0.0.1 [master repo]
       
    //... 以下省略若干行
    

    Podfile.lock作用

    在开始使用CocoaPods,执行完pod install之后,会生成一个Podfile.lock文件,每次执行pod update也会更新Podfile.lock文件。

    作用

    Podfile.lock文件最大得用处在于多人开发,保证团队中每个人使用的依赖库的版本一致

    CocoaPods管理私有库

    创建私有 Spec Repo

    Spec Repo介绍

    Spec Repo是所有的Pods的一个索引,就是一个容器,所有公开的Pods都在这个里面,它实际是一个远端的Git仓库,当你使用了Cocoapods后它会被clone到本地的~/.cocoapods/repos目录下,可以进入到这个目录看到master文件夹就是这个官方的Spec Repo了。这个master目录的结构是这个样子的

    .
    ├── Specs
        └── [SPEC_NAME]
            └── [VERSION]
                └── [SPEC_NAME].podspec
    

    相关文章

      网友评论

        本文标题:基础-简介

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