美文网首页
CocoaPods详解2:基本功能结构

CocoaPods详解2:基本功能结构

作者: 物非0人非 | 来源:发表于2021-11-15 10:37 被阅读0次

    一:CocoaPods介绍

    CocoaPods将所有依赖的库都放在一个名为Pods的项目下,然后让主项目依赖Pods项目。然后,我们编码工作都从主项目转移到Pods项目Pods项目最终会编译为一个libPod-项目名.a静态库,主项目依赖于这个静态库
    对于资源文件,CocoaPods 提供了一个名为Pods-resources.shbash脚本,该脚本在每次项目编译的时候都会执行,将第三方库的各种资源文件复制到目标目录中。

    CocoaPods 通过一个名为Pods.xcconfig 的文件来在编译时设置所有的依赖和参数。

    CocoaPods是用Ruby 写的,并由若干个 Ruby 包 (gems) 构成的。在解析整合过程中,最重要的几个gems分别是: CocoaPods/CocoaPods, CocoaPods/Core, 和 CocoaPods/Xcodeproj

    二:CocoaPod的核心组件

    • CocoaPods/CocoaPod: 面向用户的组件,每当执行一个pod 命令时,这个组件都将被激活。该组件包括了所有使用CocoaPods 涉及到的功能,并且还能通过调用所有其它的 gems 来执行任务。
    • CocoaPods/Core: Core组件提供支持与 CocoaPods 相关文件的处理,文件主要是 Podfilepodspecs
    • Podfile
      Podfile是一个文件,用于定义项目所需要使用的第三方库。该文件支持高度定制,你可以根据个人喜好对其做出定制。更多相关信息,请查阅 Podfile指南。
    • Podspec: .podspec 也是一个文件,该文件描述了一个库是怎样被添加到工程中的。它支持的功能有:列出源文件framework编译选项某个库所需要的依赖等。
    • CocoaPods/Xcodeproj: 这个 gem 组件负责所有工程文件的整合。它能够创建并修改 .xcodeproj.xcworkspace文件。它也可以作为单独的一个gem包使用。如果你想要写一个脚本来方便地修改工程文件,那么可以使用这个gem

    三:多target时Podfile该如何写?

    使用Ruby语法,定义不同的分组,然后不同的target可以自由选择依赖哪些分组,这种方式看起来更简洁,对于多target的项目来说也更友好:

    platform :ios, '8.0'
    
    def commonPods #通用pods集
        pod 'AFNetworking', '~> 2.0'
        pod 'Masonry'
    end
    
    def appOnlyPods #app专用pods集
        pod 'MBProgressHUD'
    end
    
    def extensionPods #扩展专用pods集
        pod 'GTSDKExtension'
    end
    
    target :TestCocoaPods do
        commonPods
        appOnlyPods
    
        target :TestCocoaPodsTests do
        inherit! :search_paths
        # Pods for testing
        end
    
        target :TestCocoaPodsUITests do
            inherit! :search_paths
            # Pods for testing
        end
    end
    
    target :SecondTarget do
        commonPods
    end
    
    

    四: 如何忽略Pods警告?

    有些第三方Pod集成进来会有一大堆警告信息,如果你看着比较难受想把它忽略的话,在Podfile中对应的target或分组下加上关键字inhibit_all_warnings即可。

    五:如何直接引用第三方库中的头文件?

    在用CocoaPods集成第三方库之后,默认情况下,我们需要使用类似#import <XXX/YYY.h>的方式引入第三方库的头文件。我们可以在Build Settings -> User Header Search Paths中添加${SRCROOT}并设置成recursive,这样我们就可以直接使用#impot "YYY.h"这种方式了。

    六: pod install 和 pod update

    • pod install:在Podfile中用于安装,新增,删除pod的命令。
      【1,当我们第一次运行Podfile时,如果对依赖库不指定版本的话,cocoapods会安装最新的版本,同时将pods的版本记录在Podfile.lock文件中,此文件会保持对每个pod已安装版本的跟踪,并且锁定这些版本。
      2,再执行pod install的话,只会处理没有记录在Podfile.lock中的依赖库,会查找匹配Podfile中描述的版本。
      3,当然,如果你约束了pods的版本的话,会按照你指定的版本进行安装,同时也会更新Podfile.lock记录的信息。】
    • pod update :命令仅用在更新指定pod版本,或者更新所有pod。
      【推荐用法:pod update 要更新库的名字
      这个命令会忽略Podfile.lock中的记录,直接去找符合Podfile文件中的该依赖库的约束版本(无约束的话就是最新版本)】
      在Podfile中添加新的pod后应该用pod install命令,而不是pod update命令。

    注释:尽量不要用pod update,因为它是全部检查一遍,不仅慢有时候还会出现坑。上个版本好好的,下个版本跟新一堆,可能会报错或者依赖的其他第三方有所冲突,兼容等。。。

    相关文章

      网友评论

          本文标题:CocoaPods详解2:基本功能结构

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