最近开发JustTodo时,发觉把处理托盘应用的代码封装起来是很有必要的,这样的话,在以后开发其他应用时,便不需要一而再的写重复代码。以前发布过很多Android平台的类库,但是对于macOS平台的swift库,我还是第一次。
再次吐槽一下苹果生态下的包管理,挺混乱的,最终我选择使用最新的Swift Package Manager
该文章中涉及到的所有代码都在boybeak/Tray
一、创建Github仓库
我们需要先创建一个Github仓库,我的仓库名称为Tray,将其clone到本地。
二、在仓库目录下,初始化一个Swift Package。
在Tray仓库目录下,执行以下脚本。
Tray % swift package init --type library
该命令,会自动按照目录名称,初始化一个Swift Package,其目录如下:
Tray
- Package.swift
- .gitignore
- Sources/
- Tray/Tray.swift
- Tests/
- TrayTests/TrayTests.swift
其中,Package.swift为库的索引入口,当Xcode在按照Github链接查找库时,会以查到此文件为准则。其内容如下:
// swift-tools-version: 5.10
// The swift-tools-version declares the minimum version of Swift required to build this package.
import PackageDescription
let package = Package(
name: "Tray",
products: [
// Products define the executables and libraries a package produces, making them visible to other packages.
.library(
name: "Tray",
targets: ["Tray"]),
],
targets: [
// Targets are the basic building blocks of a package, defining a module or a test suite.
// Targets can depend on other targets in this package and products from dependencies.
.target(
name: "Tray"),
.testTarget(
name: "TrayTests",
dependencies: ["Tray"]),
]
)
三、发布库
补充相关逻辑代码,提交/推送到GitHub,便可以在其他库中使用。不需要特别的发布操作。 在正式发布前,也可以本地使用,创建一个新项目,在Xcode中,File -> Add Package Denpendencies…,在弹出的管理窗口中,点击Add Local按钮,然后选择Tray文件夹,便可以本地使用,同时,你也可以在项目中,直接编辑该库的代码。
提交代码到Github后,你可以把自己的库提交到Swift Package Index,方便他人查找。进入页面后,点击Add a package,进入新页面后,会有一个绿色的Add Package(s)按钮,此点击此按钮,会自动跳转到Swift Package Index的Github的issue页面,并会有一个提交模板,输入自己库的Github链接后,提issue,机器人会处理这个issue,并再提一个新的issue,点击链接到新的issue中,点击链接,对你的代码进行code review,注意勾选viewed复选框,完成code review后,机器人会自动处理接下来的流程。
四、使用库
在Xcode中,File -> Add Package Denpendencies…,在弹出的管理窗口中,复制https://github.com/boybeak/Tray.git
到搜索库,然后就可以添加库了。