用途:在不使用 Xcode 工程的情况下,从零搭建基于 SwiftPM 的 macOS 应用,并完成构建、打包、运行与发布。
主要能力:提供 assets/templates/bootstrap/ 作为起步骨架;提供打包、运行、图标生成、签名公证、appcast 生成、开发签名身份设置、启动等脚本模板;references/packaging.md 与 references/release.md 提供打包与发布细节。
使用方式:
- 初始化:将 assets/templates/bootstrap/ 复制到新仓库,在 Package.swift、Sources/MyApp/ 和 version.env 中重命名 MyApp,并自定义 APP_NAME、BUNDLE_ID 与版本。
- 构建与打包:将 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;也可创建 git tag,把 zip/appcast 上传至 GitHub release 并发布。
脚本模板:package_app.sh 构建二进制、生成 .app bundle、复制资源并签名;compile_and_run.sh 用于开发循环(结束运行中的应用、打包、启动);build_icon.sh 从 Icon Composer 文件生成 .icns(需安装 Xcode);sign-and-notarize.sh 对发布构建公证、staple 并打 zip;make_appcast.sh 生成 Sparkle 更新条目;setup_dev_signing.sh 创建稳定的开发代码签名身份。
限制与注意:签名与 entitlements 配置需保持明确,应编辑模板脚本而非重写;若不使用 Sparkle 更新,应移除相关步骤;Sparkle 依赖 bundle 构建号 CFBundleVersion,version.env 中的 BUILD_NUMBER 每次更新必须递增;菜单栏应用打包时设置 MENU_BAR_APP=1,以在 Info.plist 中写入 LSUIElement。其他细节暂未提供。