美文网首页
iOS包依赖管理工具(六):CocoaPods VS SPM 总

iOS包依赖管理工具(六):CocoaPods VS SPM 总

作者: 青叶小小 | 来源:发表于2021-03-05 00:28 被阅读0次

    一、前言

    我们通过几篇文章,分别介绍了 Pods 和 SPM 如何使用,以及如何制作自己的库,本篇内容不多,只给出两者的对比分析。

    二、中心化 VS 去中心化

    相信大家都听过中心化这个词,通俗易懂的来讲,就是『(资源)集中式管理』:

    • CocoaPods 是中心化的,因为所有的资源索引都集中在一个仓库中(下图 Master Repo 就代表 Pods);
    中心化.png
    • SPM 则是去中心化的,需要啥资源就自己去对应的仓库中下载;
    去中心化.png

    三、对比分析

    \ CocoaPods SPM
    适用语言 \color{green}{OC、Swift} \color{orange}{Swift/OC/C/CXX}
    支持库 \color{green}{大部分支持} \color{orange}{部分支持}
    使用复杂度 \color{orange}{中等} \color{green}{简单}
    项目入侵 \color{red}{严重} \color{green}{无}
    源码可见 \color{red}{可见} \color{red}{可见}
    编译速度 \color{red}{慢} \color{orange}{首次较慢}

    不过,随着苹果不断向 Swift 倾斜,第三方的 Swift 版本库也会越来越多,而且,制作一个 SPM 库非常简单,只需定义好 Package.swift 即可;同时,苹果也在不断改进 SPM,相信不久大家新的项目都会用上 SPM。

    补充

    SPM 从 5.3 版本开始,支持资源的打包,原文链接:传送门 5.3 ReleaseNotes

    5.3 的改进主要有:

    1. 支持发布的包可以指定【不同的平台依赖】;
    2. 支持资源文件的打包:图片、文件、storyboard、xib 及其它文件
    3. 支持二进制(非源码级)依赖

    SPM 5.0 开始也支持 C 和 CXX 语言:PackageDescription API

    public enum CLanguageStandard {
        case c89
        case c90
        case iso9899_1990
        case iso9899_199409
        case gnu89
        case gnu90
        case c99
        case iso9899_1999
        case gnu99
        case c11
        case iso9899_2011
        case gnu11
    }
    
    public enum CXXLanguageStandard {
        case cxx98 = "c++98"
        case cxx03 = "c++03"
        case gnucxx98 = "gnu++98"
        case gnucxx03 = "gnu++03"
        case cxx11 = "c++11"
        case gnucxx11 = "gnu++11"
        case cxx14 = "c++14"
        case gnucxx14 = "gnu++14"
        case cxx1z = "c++1z"
        case gnucxx1z = "gnu++1z"
    }
    

    相关文章

      网友评论

          本文标题:iOS包依赖管理工具(六):CocoaPods VS SPM 总

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