美文网首页我爱编程
快速找到pod库中的所有依赖链

快速找到pod库中的所有依赖链

作者: JasonLee宸 | 来源:发表于2018-04-13 15:38 被阅读599次

    需求描述

    -针对项目中组件化进程中,多个私有库及第三方库的引用,依赖链长度是逐渐增加的,为了便于版本管理,需要知道项目中所有库的依赖项。

    思考

    了解此处的前提是,对cocoapods私有库有所了解,对于私有库来说,基本信息都放在.podspec文件中。我们先来看一下podspec长什么样:


    image.png

    具体各个字段代表的含义,此处就不赘述了。
    对于依赖项: dependency
    如果这里去掉了注释,代表MJExtension内部依赖了AFNetworking
    我们需要的就是所有库中的每个库的依赖项
    so,如果我们拿到所有库的podspec,从中获取dependency 内容,就解决了该问题。

    方法一

    对应的.podspec文件,还有一类文件,.podspec.json
    可以通过工程文件中 -- Pods(.xcodeproj同目录下)--》Local Podspecs
    该目录下存放的就是.json文件
    也可以通过终端中
    //打印转换后的JSON。
    $ pod ipc spec Name.podspec
    //转换JSON
    $ pod ipc spec Name.podspec >> Name.podspec.json

    转换成json文件后,我们就可以解析json,来获取该库的依赖项
    这里我写了一个shell脚本,通过js插件 将依赖项输出到out.log

    for file in ./*.json
    do
        if test -f $file
        then
            jq '.dependencies'  $file >../out.log
        fi
    
        if test -d $file
        then
            echo $file 是目录
        fi
    done
    

    方法二

    方法一还需要自己写脚本,并且Local Podspecs 里面不一定包含所有库的podspec的json文件
    那么,还有什么办法呢?
    在Local Podspecs 所在同一目录中,即Pods文件下,有一个文件Manifest.lock,这玩意干嘛的?

    Manifest.lock 是 Podfile.lock 的副本,每次只要生成 Podfile.lock 时就会生成一个一样的 Manifest.lock 存储在 Pods 文件夹下。在每次项目 Build 的时候,会跑一下脚本检查一下 Podfile.lock 和 Manifest.lock 是否一致。
    我们看一下里面长什么样:

    PODS:
      - AFNetworking/NSURLSession (3.1.0):
        - AFNetworking/Reachability
        - AFNetworking/Security
        - AFNetworking/Serialization
      - AFNetworking/Reachability (3.1.0)
      - AFNetworking/Security (3.1.0)
      - AFNetworking/Serialization (3.1.0)
      - Masonry (1.0.0)
    DEPENDENCIES:
      - Masonry (= 1.0.0)
    EXTERNAL SOURCES:
      xxxx:
        :path: "../"
    
    SPEC CHECKSUMS:
      AFNetworking: xxxxxxx
    
    PODFILE CHECKSUM: xxxxxx
    
    COCOAPODS: 1.2.1
    
    image.png

    这东西不是正是我们所需要的么!

    最后

    对于这个问题,也只是为了知道工程的所有依赖项,如果某一个组建库出现问题,便于快速定位和不遗漏解决问题。需求解决了,也学到js,js插件能过快速解析json文件输出所需内容。
    对于podfile.lock可参考👇

    关于 Podfile.lock 带来的痛

    相关文章

      网友评论

        本文标题:快速找到pod库中的所有依赖链

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