Co-Pilot / 辅助式
更新于 a month ago
macos-spm-app-packaging
DDimillian
1.5k
Dimillian/Skills/macos-spm-app-packaging
💡 摘要
该工具在不需要Xcode的情况下,搭建、构建和打包基于SwiftPM的macOS应用程序。
🎯 适合人群
希望简化macOS应用程序打包的Swift开发者想要避免Xcode开销的独立开发者管理macOS应用程序部署的DevOps工程师学习Swift和macOS应用程序开发的学生创建macOS应用程序的开源贡献者
🤖 AI 吐槽: “看起来很能打,但别让配置把人劝退。”
安全分析中风险
风险:Medium。建议检查:是否执行 shell/命令行指令。以最小权限运行,并在生产环境启用前审计代码与依赖。
name: macos-spm-app-packaging description: Scaffold, build, and package SwiftPM-based macOS apps without an Xcode project. Use when you need a from-scratch macOS app layout, SwiftPM targets/resources, a custom .app bundle assembly script, or signing/notarization/appcast steps outside Xcode.
macOS SwiftPM App Packaging (No Xcode)
Overview
Bootstrap a complete SwiftPM macOS app folder, then build, package, and run it without Xcode. Use assets/templates/bootstrap/ for the starter layout and references/packaging.md + references/release.md for packaging and release details.
Two-Step Workflow
-
Bootstrap the project folder
- Copy
assets/templates/bootstrap/into a new repo. - Rename
MyAppinPackage.swift,Sources/MyApp/, andversion.env. - Customize
APP_NAME,BUNDLE_ID, and versions.
- Copy
-
Build, package, and run the bootstrapped app
- Copy scripts from
assets/templates/into your repo (for example,Scripts/). - Build/tests:
swift buildandswift test. - Package:
Scripts/package_app.sh. - Run:
Scripts/compile_and_run.sh(preferred) orScripts/launch.sh. - Release (optional):
Scripts/sign-and-notarize.shandScripts/make_appcast.sh. - Tag + GitHub release (optional): create a git tag, upload the zip/appcast to the GitHub release, and publish.
- Copy scripts from
Templates
assets/templates/package_app.sh: Build binaries, create the .app bundle, copy resources, sign.assets/templates/compile_and_run.sh: Dev loop to kill running app, package, launch.assets/templates/build_icon.sh: Generate .icns from an Icon Composer file (requires Xcode install).assets/templates/sign-and-notarize.sh: Notarize, staple, and zip a release build.assets/templates/make_appcast.sh: Generate Sparkle appcast entries for updates.assets/templates/setup_dev_signing.sh: Create a stable dev code-signing identity.assets/templates/launch.sh: Simple launcher for a packaged .app.assets/templates/version.env: Example version file consumed by packaging scripts.assets/templates/bootstrap/: Minimal SwiftPM macOS app skeleton (Package.swift, Sources/, version.env).
Notes
- Keep entitlements and signing configuration explicit; edit the template scripts instead of reimplementing.
- Remove Sparkle steps if you do not use Sparkle for updates.
- Sparkle relies on the bundle build number (
CFBundleVersion), soBUILD_NUMBERinversion.envmust increase for each update. - For menu bar apps, set
MENU_BAR_APP=1when packaging to emitLSUIElementin Info.plist.
五维分析
清晰度8/10
创新性6/10
实用性9/10
完整性8/10
可维护性7/10
优缺点分析
优点
- 无需Xcode,简化复杂性
- 可定制的应用程序打包过程
- 支持SwiftPM,现代包管理器
- 适用于各种应用类型,包括菜单栏应用
缺点
- 需要熟悉命令行工具
- 仅限于macOS,不支持跨平台
- 可能需要额外的签名设置
- 不如Xcode的图形界面用户友好
相关技能
免责声明:本内容来源于 GitHub 开源项目,仅供展示和评分分析使用。
版权归原作者所有 Dimillian.
