ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

构建与发布Compositor完全指南:Xcode编译、Developer ID签名、公证与自动更新

构建与发布Compositor完全指南:Xcode编译、Developer ID签名、公证与自动更新 构建与发布Compositor完全指南Xcode编译、Developer ID签名、公证与自动更新【免费下载链接】CompositorThe Photoshop alternative for Mac项目地址: https://gitcode.com/gh_mirrors/compos/CompositorCompositor 是一款免费开源的 Mac 图像编辑器Photoshop 替代品本文完整讲解如何从零开始构建与发布 Compositor用 Xcode 编译项目、Developer ID 签名、苹果公证Notarization与 Sparkle 自动更新让任何 Mac 用户双击 DMG 即可无警告安装。️ 认识 CompositorCompositor 用 SwiftUI 构建围绕 Photoshop 的合成与后期工作流设计图层与混合模式、蒙版、非破坏性变换、魔棒/选区、内容感知填充、曲线/色阶/色相饱和度、层特效GPU 渲染以及 PSD 导入导出。 发布前置条件在开始构建 Compositor 之前请准备好以下环境均保存在仓库之外避免泄露准备项说明macOS 26.5 / Xcode 26编译 Compositor 的最低系统要求Developer ID Application 证书存放在登录钥匙串用于签名公证凭证通过xcrun notarytool store-credentials compositor-notary …一次性保存create-dmg用 Homebrew 安装用于制作 DMGghCLI已登录用于创建 Release 与推送更新源️ 用 Xcode 编译 Compositor本地开发最快的方式就是直接跑 Debug 版打开Compositor.xcodeproj选择Compositorscheme 并运行版本信息维护在 project.pbxproj 中MARKETING_VERSION如 1.2.2是展示版本号CURRENT_PROJECT_VERSION如 17是构建号——Sparkle 自动更新正是靠构建号递增来判断有新版本。 项目通过 SwiftPM 依赖 Sparkle 2.10.0首次构建时 Xcode 会自动拉取并编译。✍️ Developer ID 签名ExportOptions 配置发布构建与开发构建最大的区别是签名身份。ExportOptions.plist 指定了导出方式method developer-id导出面向分发的签名包而非 App StoresigningStyle manualsigningCertificate Developer ID Application手动指定证书teamID你的开发者团队 ID发布脚本 scripts/release.sh 会执行这三步xcodebuild archive—— 以 Release 配置归档并显式传入CODE_SIGN_IDENTITY与DEVELOPMENT_TEAMxcodebuild -exportArchive—— 按 plist 导出已签名的.appcodesign --verify --deep --strict—— 立即校验签名完整性⚠️ 一个容易踩的坑脚本特意把构建放在~/Library/Caches/CompositorRelease因为 Dropbox 等云同步工具给文件附加的扩展属性xattr会导致代码签名失败。 公证Notarization让 Gatekeeper 放行签名之后macOS 还需要一份公证回执。流程在 scripts/release.sh 中ditto -c -k --keepParent $APP_PATH Compositor.zip # 打包成 zip xcrun notarytool submit Compositor.zip --keychain-profile compositor-notary --wait xcrun stapler staple Compositor.app # 把回执钉进应用staple之后用户离线打开 DMG 时系统也能验证公证状态。项目同时启用了沙盒见 Compositor.entitlements其中专门为 Sparkle 的更新助手服务声明了 Mach 服务例外否则沙盒应用无法调用 Sparkle 安装更新。 打包 DMG带窗口布局与 Retina 背景release.sh用create-dmg制作安装窗口细节考究窗口固定600 × 380 点应用图标与拖到应用程序链接精确摆位背景图使用 600×380 与 1200×760 两张尺寸经tiffutil -cathidpicheck合成一张 TIFF——Finder 只认单张背景图这样 Retina 屏上依然锐利最后再对 DMG 本身签名、公证、staple 一遍脚本末尾还会预演 Gatekeeper 的判定spctl --assess --type open --context context:primary-signature --verbose2 Compositor.dmg看到accepted就说明发布包合格。 Sparkle 自动更新appcast 更新源Compositor 内置 Sparkle 自动更新框架。接入点很简单——CompositorApp.swift 中 import Sparkle菜单提供Check for Updates…入口调用updater.checkForUpdates(nil)。关键配置集中在 Info.plistSUFeedURL指向仓库主分支的 appcast.xmlSUPublicEDKeySparkle 更新的 EdDSA 公钥校验签名防篡改SUEnableInstallerLauncherService true允许通过辅助服务替换正在运行的 appappcast.xml 是标准 RSS 格式每个item携带版本、最低系统版本、下载直链和sparkle:edSignature签名例如当前版本 1.2.2构建号 17、最低系统 26.5。 一键发布release.sh publish.sh完整发布只需两条命令./scripts/release.sh # 构建 签名 公证 DMG → dist/Compositor-版本.dmg RELEASE_NOTES… ./scripts/publish.sh # 签名更新包 创建 Release 发布更新源publish.sh 的完整流程用 Sparkle 自带的sign_update对 DMG 生成 edSignature用gh release create发布v版本附件统一命名为Compositor.dmg保证latest/download/Compositor.dmg直链永远有效生成新的appcast.xml提交并推送到 main 分支——客户端随即感知到新版本✅ 常见问题速查签名失败检查文件是否被云盘附加 xattr改用本地目录构建。公证一直等待确认store-credentials的 profile 名称与脚本中NOTARY_PROFILE一致。更新没触发记住递增CURRENT_PROJECT_VERSION且v版本Release 不能重复创建。更多背景项目 README.md 的 Releasing 一节与 docs/project-format.md 可作参考。按照以上步骤你就能构建出一个签名完整、公证通过、支持自动更新的 Compositor 发布包 【免费下载链接】CompositorThe Photoshop alternative for Mac项目地址: https://gitcode.com/gh_mirrors/compos/Compositor创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表