ClawSkills logoClawSkills

Macos Spm App Packaging

在没有 Xcode 项目的情况下搭建、构建和打包基于 SwiftPM 的 macOS 应用。当您需要从零开始的 macOS 应用布局、SwiftPM 目标/资源时使用。

介绍

# macOS SwiftPM App Packaging (No Xcode)

## 概述 引导初始化一个完整的 SwiftPM macOS 应用文件夹,然后在无需 Xcode 的情况下构建、打包和运行它。使用 `assets/templates/bootstrap/` 作为起始布局,并参考 `references/packaging.md` 和 `references/release.md` 了解打包和发布的详细信息。

## 两步工作流 1) 引导初始化项目文件夹 - 将 `assets/templates/bootstrap/` 复制到新的仓库中。 - 在 `Package.swift`、`Sources/MyApp/` 和 `version.env` 中重命名 `MyApp`。 - 自定义 `APP_NAME`、`BUNDLE_ID` 和版本号。

2) 构建、打包并运行引导后的应用 - 将 `assets/templates/` 中的脚本复制到你的仓库中(例如复制到 `Scripts/`)。 - 构建或测试:`swift build` 和 `swift test`。 - 打包:`Scripts/package_app.sh`。 - 运行:`Scripts/compile_and_run.sh`(推荐)或 `Scripts/launch.sh`。 - 发布(可选):`Scripts/sign-and-notarize.sh` 和 `Scripts/make_appcast.sh`。 - 打标签 + GitHub 发布(可选):创建一个 git 标签,将 zip 文件和 appcast 上传到 GitHub 发布页,并发布。

## 模板 - `assets/templates/package_app.sh`:构建二进制文件,创建 .app 包,复制资源,签名。 - `assets/templates/compile_and_run.sh`:用于开发循环的脚本,用于终止运行中的应用、打包、启动。 - `assets/templates/build_icon.sh`:从 Icon Composer 文件生成 .icns(需要安装 Xcode)。 - `assets/templates/sign-and-notarize.sh`:公证、装订和压缩发布构建。 - `assets/templates/make_appcast.sh`:生成用于更新的 Sparkle appcast 条目。 - `assets/templates/setup_dev_signing.sh`:创建稳定的开发代码签名身份。 - `assets/templates/launch.sh`:打包后的 .app 的简单启动器。 - `assets/templates/version.env`:由打包脚本使用的示例版本文件。 - `assets/templates/bootstrap/`:最小的 SwiftPM macOS 应用骨架(Package.swift, Sources/, version.env)。

## 注意事项 - 保持授权和签名配置明确;请编辑模板脚本而不是重新实现。 - 如果不使用 Sparkle 进行更新,请删除 Sparkle 相关步骤。 - Sparkle 依赖包构建版本号(`CFBundleVersion`),因此 `version.env` 中的 `BUILD_NUMBER` 必须在每次更新时递增。 - 对于菜单栏应用,在打包时设置 `MENU_BAR_APP=1` 以在 Info.plist 中生成 `LSUIElement`。

更多产品