名称: macos-spm-app-packaging
描述: 在不使用 Xcode 项目的情况下,为基于 SwiftPM 的 macOS 应用搭建脚手架、构建和打包。适用于需要从零开始创建 macOS 应用结构、SwiftPM 目标/资源、自定义 .app 包组装脚本,或在 Xcode 之外进行签名/公证/Appcast 流程的场景。
引导生成一个完整的 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 Release,并发布。
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:对发布版本进行公证、装订并压缩为 zip。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)。CFBundleVersion),因此 version.env 中的 BUILD_NUMBER 必须在每次更新时递增。MENU_BAR_APP=1 以在 Info.plist 中生成 LSUIElement 字段。