You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在代码中获取Swift Package Manager(SPM)依赖包的版本号

SPM 引入第三方依赖后运行时获取版本号的可行方案

以下是三种常用的落地方案,你可以根据自己的项目情况选择:

  • 方案1:直接调用依赖库暴露的版本属性
    大部分主流SPM开源库会主动对外暴露版本常量,比如Alamofire可以直接调用Alamofire.version获取版本号。你可以先查看对应依赖库的公开API文档,确认是否有提供现成的版本属性,这种方式成本最低。
  • 方案2:手动维护版本映射表
    如果依赖库没有对外暴露版本信息,可以手动把用到的依赖版本存在项目配置里:
    1. 在项目的Info.plist中新增一个字典类型的配置项,命名为SPMDependencyVersions,内部按照依赖库名称: 版本号的格式填写你引入的所有依赖的版本,比如Alamofire: 5.8.1
    2. 运行时读取配置即可,参考代码:
    guard let infoDict = Bundle.main.infoDictionary,
          let versionMap = infoDict["SPMDependencyVersions"] as? [String: String],
          let targetVersion = versionMap["你要查询的依赖库名称"] else {
        return
    }
    print("依赖版本:\(targetVersion)")
    
  • 方案3:构建阶段自动生成版本代码
    依赖数量多不想手动维护的话,可以通过构建脚本自动解析SPM的版本文件生成代码:
    1. SPM会把所有依赖的准确版本、分支、Commit哈希信息存在项目根目录的Package.resolved文件中,本质是JSON格式
    2. 在Xcode的「Build Phases」中新增一个Run Script,放到「Compile Sources」阶段之前,脚本逻辑负责解析Package.resolved提取所有依赖的版本信息,自动生成包含版本常量的Swift文件,加入项目编译
    3. 运行时直接调用自动生成的常量就能拿到对应依赖的版本

注意:如果你引入依赖时用的是分支名、Commit哈希而非正式版本号,解析出来的结果就是对应的分支名/哈希值。

内容的提问来源于stack exchange,提问作者MendyK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 05:45:10