Xcode15 Swift Package Manager(SPM)自定义篇

请添加图片描述

前言

在程序员的世界里,大家最敬佩的当属那些流行开源框架的作者了,他们无私地将自己的成果分享出来让大家使用和学习,丰富了技术生态,活跃了技术社区。最新的开源库分发方式便是Swift Package Manager(SPM),那么如何自定义一个SPM开源库呢?本篇文章将从SPM的结构分析开始,介绍如何实现自定义SPM的完整过程。

一、SPM结构分析

在这里插入图片描述
分析这个库的结构,可以得知组成这个库最重要的是Package.swift 和 ClockHandRotationKit.xcframework 两部分

1.1 Package.swift 解析

Package.swift文件是用于描述和配置Swift Package Manager(SPM)项目的文件

  • swift-tools-version:这是一个注释行,用于声明构建该项目所需的最低Swift工具版本。在这个注释行中,您可以指定一个版本号,例如swift-tools-version:5.3,以确保项目在构建时使用正确的Swift工具版本。

  • import PackageDescription:这是导入PackageDescription模块的语句,该模块提供了用于描述和配置Swift包的API。

  • let package = Package(…):这是一个let语句,用于创建一个名为package的常量,它是一个Package类型的实例。在花括号内,您可以配置您的包的各个属性和设置。

  • name:这是一个属性,用于指定您的项目的名称。您可以将其设置为一个字符串,例如name: “MyProject”。

  • platforms:这是一个属性,用于指定您的包所支持的平台和最低部署版本。

  • products:这是一个属性,用于定义您的包所产生的产品(即可执行文件、库等)。它是一个包含字典的数组,每个字典表示一个产品。在每个字典中,您可以指定产品的名称(name)和目标(targets),以及其他可选属性。

  • dependencies:这是一个属性,用于定义您的包所依赖的其他包。它是一个包含Package.Dependency类型的数组,每个Package.Dependency对象表示一个依赖项。您可以通过指定依赖项的URL、版本要求和其他选项来添加依赖项。

  • targets:这是一个属性,用于定义您的包的目标(即模块或测试套件)。它是一个包含字典的数组,每个字典表示一个目标。在每个字典中,您可以指定目标的名称(name)、依赖项(dependencies)、源代码路径(path)以及其他可选属性。

1.2 targets(ClockHandRotationKit.xcframework)

这部分决定了这个库是用来做什么的,ClockHandRotationKit 这个库就是将 ClockHandRotationKit.xcframework 用SPM方式来管理和分发,ClockHandRotationKit.xcframework 可以是源代码也可以是其它二进制库。

二、创建SPM库

2.1 Xcode -> File -> New -> Package
在这里插入图片描述
2.2 输入项目名,点击『Create』:
在这里插入图片描述

2.3 Xcode 自动帮我们生成了配置文件和源码目录:
在这里插入图片描述

三、编写SPM库

  • 删除多余文件
  • 添加已经制作好的HHtestKit.xcframework(如果不知道如何制作,在文章结尾有博客链接)
  • 修改Package.swift 文件

在这里插入图片描述

四、上传SPM库

4.1 新建一个远程仓库
在这里插入图片描述

4.2 提交SPM文件

在这里插入图片描述

4.3 添加发行版(release)

在这里插入图片描述

五、项目中使用

用远程仓库地址搜索
在这里插入图片描述

添加完成以及使用

在这里插入图片描述

查看库文件 sayHelloworld -> Jump to definition

在这里插入图片描述

相关文章

  1. Xcode15 Swift Package Manager(SPM)使用篇
  2. Xcode15 Swift Package Manager(SPM)自定义篇
  3. Xcode15 Swift 制作 XCFramework
  4. Xcode15 Shell脚本制作XCFramework

感谢您的阅读和参与,HH思无邪愿与您一起在技术的道路上不断探索。如果您喜欢这篇文章,不妨留下您宝贵的赞!如果您对文章有任何疑问或建议,欢迎在评论区留言,我会第一时间处理,您的支持是我前行的动力,愿我们都能成为更好的自己!