【研发类-桌面开发Skills】macos-spm-app-packaging 技能

发布时间:2026/6/10 4:05:02

【研发类-桌面开发Skills】macos-spm-app-packaging 技能 无需Xcode项目即可搭建、构建、签名和打包SwiftPM macOS应用。技能概述macos-spm-app-packaging 技能提供了一个完整的工作流程用于引导、构建、打包和运行SwiftPM macOS应用而无需依赖Xcode项目。使用assets/templates/bootstrap/作为启动布局references/packaging.md和references/release.md提供打包和发布详情。适用于需要基于SwiftPM的macOS应用而不依赖Xcode项目的场景。下载地址https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/macos-spm-app-packaging主要功能项目引导快速搭建SwiftPM macOS应用项目结构应用构建使用SwiftPM构建macOS应用应用打包创建.app包并配置资源代码签名实现应用签名和公证发布管理生成Sparkle appcast条目用于更新触发条件在以下情况下应该调用此技能:用户需要基于SwiftPM的macOS应用而不依赖Xcode项目需要SwiftPM应用的打包、签名、公证或appcast指导需要快速搭建macOS应用项目结构需要实现应用的自动化构建和发布流程两步工作流程步骤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发布并发布最小端到端示例从引导到运行应用的最短路径# 1. 复制并重命名骨架cp -R assets/templates/bootstrap/ ~/Projects/MyAppcd ~/Projects/MyAppsed -i s/MyApp/HelloApp/g Package.swift version.env# 2. 复制脚本cp assets/templates/package_app.sh Scripts/cp assets/templates/compile_and_run.sh Scripts/chmod x Scripts/*.sh# 3. 构建并启动swift buildScripts/compile_and_run.sh验证检查点打包后Scripts/package_app.sh# 确认.app包结构完整ls -R build/HelloApp.app/Contents# 检查二进制文件存在且可执行file build/HelloApp.app/Contents/MacOS/HelloApp签名后Scripts/sign-and-notarize.sh或临时开发签名# 检查签名和权限codesign -dv --verbose4 build/HelloApp.app# 验证包在本地通过Gatekeeper检查spctl --assess --type execute --verbose build/HelloApp.app公证和装订后# 确认装订票据已附加stapler validate build/HelloApp.app# 重新运行Gatekeeper以确认公证被识别spctl --assess --type execute --verbose build/HelloApp.app常见公证失败症状可能原因恢复方法The software asset has already been uploaded相同版本的重复提交在version.env中增加BUILD_NUMBER并重新打包Package Invalid: Invalid Code Signing Entitlements.entitlements文件中的权限与配置不匹配根据Apple允许的集合审核权限删除不支持的键The executable does not have the hardened runtime enabledcodesign调用中缺少--options runtime标志编辑sign-and-notarize.sh在所有codesign调用中添加--options runtime公证挂起/无状态邮件xcrun notarytool网络或凭据问题运行xcrun notarytool history检查状态如果过期则重新导出App Store Connect API密钥stapler validate在成功公证后失败票据尚未传播等待约60秒然后重新运行xcrun stapler staple可用模板package_app.sh构建二进制文件创建.app包复制资源签名compile_and_run.sh开发循环终止运行的应用打包启动build_icon.sh从Icon Composer文件生成.icns需要Xcode安装sign-and-notarize.sh公证、装订和压缩发布构建make_appcast.sh生成Sparkle appcast条目用于更新setup_dev_signing.sh创建稳定的开发代码签名身份launch.sh打包.app的简单启动器version.env打包脚本使用的示例版本文件bootstrap/最小SwiftPM macOS应用骨架Package.swift、Sources/、version.env最佳实践保持权限和签名配置明确编辑模板脚本而不是重新实现移除Sparkle步骤如果不使用Sparkle进行更新移除相关步骤增加构建号Sparkle依赖于包构建号CFBundleVersion因此version.env中的BUILD_NUMBER必须为每次更新增加菜单栏应用对于菜单栏应用打包时设置MENU_BAR_APP1以在Info.plist中发出LSUIElement局限性仅在任务明确匹配上述范围时使用此技能不要将输出视为环境特定验证、测试或专家审查的替代品如果缺少必需的输入、权限、安全边界或成功标准请停止并请求澄清

相关新闻