OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  macos-spm-app-packaging:基于 SwiftPM 的 macOS 应用构建与打包

macos-spm-app-packaging:基于 SwiftPM 的 macOS 应用构建与打包

 
  optimization ·  2026-02-04 20:24:33 · 3 次点击  · 0 条评论  

名称: macos-spm-app-packaging
描述: 在不使用 Xcode 项目的情况下,为基于 SwiftPM 的 macOS 应用搭建脚手架、构建和打包。适用于需要从零开始创建 macOS 应用结构、SwiftPM 目标/资源、自定义 .app 包组装脚本,或在 Xcode 之外进行签名/公证/Appcast 流程的场景。


macOS SwiftPM 应用打包(无需 Xcode)

概述

引导生成一个完整的 SwiftPM macOS 应用文件夹,然后无需 Xcode 即可构建、打包和运行。使用 assets/templates/bootstrap/ 作为初始项目结构模板,并参考 references/packaging.mdreferences/release.md 获取打包与发布的详细说明。

两步工作流

1) 引导项目文件夹
- 将 assets/templates/bootstrap/ 复制到新的代码仓库中。
- 重命名 Package.swiftSources/MyApp/version.env 中的 MyApp
- 自定义 APP_NAMEBUNDLE_ID 和版本号。

2) 构建、打包和运行引导后的应用
- 将 assets/templates/ 中的脚本复制到你的仓库(例如,放入 Scripts/ 目录)。
- 构建与测试:运行 swift buildswift test
- 打包:运行 Scripts/package_app.sh
- 运行:使用 Scripts/compile_and_run.sh(推荐)或 Scripts/launch.sh
- 发布(可选):运行 Scripts/sign-and-notarize.shScripts/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)。

注意事项

  • 保持权利文件和签名配置的明确性;请直接编辑模板脚本,而非重新实现。
  • 如果不使用 Sparkle 进行更新,请移除相关步骤。
  • Sparkle 依赖构建号 (CFBundleVersion),因此 version.env 中的 BUILD_NUMBER 必须在每次更新时递增。
  • 对于菜单栏应用,打包时设置 MENU_BAR_APP=1 以在 Info.plist 中生成 LSUIElement 字段。
3 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor