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

2021-03-05  本文已影响0人  青叶小小

一、前言

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

二、中心化 VS 去中心化

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

中心化.png 去中心化.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"
}
上一篇 下一篇

猜你喜欢

热点阅读