美文网首页
[iOS开发]cocoapods安装及使用

[iOS开发]cocoapods安装及使用

作者: 沈枫_ShenF | 来源:发表于2020-08-07 13:41 被阅读0次

    cocoapods相关整理:

    一. 安装Ruby + CocoaPods

    使用Homeview安装ruby

    1.brew install ruby(安装最新版的ruby)
    2.ruby --version(ruby版本)
    3.curl -SSL https://get.rvm.io | bash -s stable(RVM 是一个便捷的多版本 Ruby 环境的管理和切换工具.安装它,官网:https://rvm.io/
    4.rvm get stable(rvm更新)
    5.rvm --version(rvm版本)
    6.sudo gem update --system(gem更新)
    7.gem sources --remove https://rubygems.org/(移除之前的源)
    8.gem sources --add https://gems.ruby-china.com/(设置新的源)
    9.gem sources -l(查看当前源)
    10.gem --version(gem版本)

    安装cocoapods

    1.sudo gem install -n /usr/local/bin cocoapods(安装cocoapods)
    2.pod setup(安装本地库)
    3.pod repo update(更新本地库)
    4.pod --version(pod版本)

    卸载cocoapods

    sudo gem uninstall -n /user/local/bin cocoapods

    二. pod命令

    1.pod init:初始化
    2.pod install:安装库
    3.pod update:更新库
    4.pod search XXX:查找所需三方库
    5.gem install cocoapods --pre:更新Cocoapods
    6.pod env:查看已经安装的cocoapods版本
    7.pod outdated:查看Podfile文件中的依赖库的最新版本

    三. pod install 和 pod update的区别

    • pod install:会去检查podfile.lock是否已经包含该库,如果包含则继续判断是否指定版本,如果指定版本就去检查podfile.lock中保存的版本是否与新指定的相同,相同则跳过,不相同则更新,如果没有指定版本则不检查更新直接跳过,如果不包含该库则去下载该库并将版本保存在podfile.lock文件中。每次当pod install 命令运行,并下载安装新的pods的时候,他会在Podfile.lock中为每个pod写入它安装的版本。此文件跟踪每一个已安装的版本,并且锁定这些版本。当运行pod install 的时候它仅仅解析那些Podfile.lock中位列出的依赖关系。对于Podfile.lock中列出的pods,它仅仅会下载指明的版本,不会去检查是否有新版本可用。对于Podfile.lock中未列出的pods,他会搜索与Podfile中内容相匹配的版本 (例如 pod 'MyPod', '~>1.2')。
    • pod update:这个命令会忽略Podfile.lock中的记录,直接去找符合Podfile文件中的该依赖库的约束版本(无约束的话就是最新版本)。一般在你想要更新pods到一个新的版本的时候使用。当运行pod update PODNAME时,CocoaPods将尝试查找PODNAME的更新版本,而不考虑Podfile.lock中列出的版本。 它会将pod更新为可能的最新版本(只要它与Podfile中的版本限制相匹配)。如果运行pod更新没有pod名称,CocoaPods将更新您Podfile中列出的每个pod到最新的版本。

    四. pod install 和 pod update的使用场景

    • pod install使用场景:
      a.新创建工程,第一次引入pod库时
      b.修改了Podfile文件,添加或删除了所依赖的pod库时。
      c.团队中新人拉取工程后获取pod库时。
      d.团队中,不同开发者要同步对pod库的依赖时(有人改变了依赖关系,删除或增加pod时。还有就是有人执行了pod update,此时他的Podfile.lock文件中的跟踪版本就已经变更,此时,其他人只要pod install就能更新为和Podfile.lock文件中的版本。还有就是如果Podfile和Podfile.lock的记录相冲突,Podfile文件中指定了低于Podfile.lock中记录的版本。会以Podfile文件为准,并在获取成功后更新Podfile.lock文件。)
    • pod update使用场景:更新pods版本的时候使用。

    五. podfile指定版本号

    '> 0.1'    Any version higher than 0.1         0.1以上
        '>= 0.1'   Version 0.1 and any higher version  0.1以上,包括0.1
        '< 0.1'    Any version lower than 0.1          0.1以下
        '<= 0.1'   Version 0.1 and any lower version   0.1以下,包括0.1
        In addition to the logic operators CocoaPods has an optimisicoperator ~>:
        '~> 0.1.2' Version 0.1.2 and the versions up to 0.2, not including 0.2 and higher  0.2以下(不含0.2),0.1.2以上(含0.1.2)
        '~> 0.1' Version 0.1 and the versions up to 1.0, not including 1.0 and higher      1.0以下(不含1.0),0.1以上(含0.1)
        '~> 0' Version 0 and higher, this is basically the same as not having it.          0和以上,等于没有此约束
    

    六. Podfile.lock文件

    • Podfile.lock文件存储了已经安装的依赖库的版本。
    • 当我们第一次运行Podfile时,如果对依赖库不指定版本的话,cocoapods会安装最新的版本,同时将pods的版本记录在Podfile.lock文件中。这个文件会保持对每个pod已安装版本的跟踪,并且锁定这些版本。再执行pod install的话,只会处理没有记录在Podfile.lock中的依赖库,会查找匹配Podfile中描述的版本。对于已经记录在Podfile.lock的依赖库,会下载Podfile.lock文件中记录的版本,而不会检查是否有更新。当然,如果你约束了pods的版本的话,会按照你指定的版本进行安装,同时也会更新Podfile.lock记录的信息。
    • Podfile.lock内部
    PODS:
                - Masonry (1.1.0)
              DEPENDENCIES:
                - Masonry (~> 1.1.0)
              SPEC REPOS:
                trunk:
                  - Masonry
              SPEC CHECKSUMS:
                Masonry: 678fab65091a9290e40e2832a55e7ab731aad201
              PODFILE CHECKSUM: 7a5a6c829f4d2252e3e3d116ab9757a3b270ed8a
              COCOAPODS: 1.9.3
    

    七. Cocoapods原理

    是将所有的依赖库都放到另一个名为Pods的项目中, 然而让主项目依赖Pods项目,这样,源码管理工作任务从主项目移到了Pods项目中,Pods项目最终会编译成一个名为libPods.a的文件, 主项目只要依赖这个.a文件即可,对于资源文件, CocoaPods提供了一个名为Pods-resources.sh的bash脚步, 该脚本在每次项目, 编译的时候都会执行,将第三方库的各种资源文件复制到目标目录中,CocoaPods通过一个名为Pods.xcconfig的文件在编译设置所有的依赖和参数。

    八. Cocoapods下载原理

    s.source = { :git => '[git@gitlab.xxx.net](https://links.jianshu.com/go?to=mailto%3Agit%40gitlab.xxx.net):ios-thirdpartservice/xxxreact.git', :tag => '1.0.0' }
    

    当使用Cocoapods导入私有库时,Cocoapods先是根据以上链接找到对应的git仓库,然后根据:tag => ‘1.0.0’定位到对应tag的提交版本,如果没有注明Pod依赖库版本则定位到最后一次的提交,然后在这次提交中检索后缀为.podspec的文件(文件可以随便命名)。然后根据Podspec中的s.source_files找到需要导入的代码文件,并通过其他的的数据找到对应的配置文件或资源文件等。最后,将其下载到本地项目中。

    九. 指定repo镜像

    pod repo remove master   
    pod repo add master https://gitee.com/mirrors/CocoaPods-Specs   (gitee镜像)
    pod repo update 
    

    或者:

    pod repo remove master
    pod repo add master https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git   
    pod repo update 
    

    在podfile文件中加上相应的source:

    source 'https://gitee.com/mirrors/CocoaPods-Specs.git'
    

    或者:

    source 'https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git'
    

    相关文章

      网友评论

          本文标题:[iOS开发]cocoapods安装及使用

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