首页/新闻资讯/正文详情

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

发布时间:2026/9/24 19:58:02 来源:云帆数科 栏目:资讯中心
构建与发布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),仅供参考

相关推荐

Humanizer 的 IGrammaticalCaseTimeSpanHumanizeStrategy:让 TimeSpan 时长文本按语法格(Grammatical Case)本地化
Humanizer 的 IGrammaticalCaseTimeSpanHumanizeStrategy:让 TimeSpan 时长文本按语法格(Grammatical Case)本地化

开发工具 【免费下载链接】Humanizer Humanizer meets all your .NET needs for manipulating and displaying strings, enums, dates, times, timespans, numbers and quantities 项目地址: https://gitcode.com/gh_mirrors/hu/Humanizer 点击查看 免费下载 导读 … · 2026/9/24 19:58:02

十六进制与RGB色值转换全攻略:从手算原理到在线工具实战
十六进制与RGB色值转换全攻略:从手算原理到在线工具实战

做设计这一行的,几乎没人能躲开颜色值的忽然切换。上午还在和开发对稿,前端丢过来一串#2C3E50,让你确认下这个颜色是不是品牌标准色;下午要导出一个给印刷厂的物料,对方又问你要 RGB 数值是多少。很多刚入行的设计师看… · 2026/9/24 19:57:54

C盘飘红怎么清理?7款免费磁盘扫描工具实测与完整清理流程
C盘飘红怎么清理?7款免费磁盘扫描工具实测与完整清理流程

1. 先搞清楚C盘为什么说红就红 1.1 磁盘飘红背后的真实原因 C盘飘红这件事,几乎每个用Windows的人都遇到过。你明明没往C盘里塞什么大文件,某天开机一看,进度条已经红得刺眼。这种情况在Win10和Win11上尤其常见,因为系统本身、更… · 2026/9/24 19:57:54

从内部工具到GitHub全球开源:许可证、文档与社区治理实战指南
从内部工具到GitHub全球开源:许可证、文档与社区治理实战指南

决定把一个项目推向全球开源的那一刻,是在一个周五的深夜。原因不是什么宏大的理想,而是我在内部仓库里翻到一段三年前写的脚本,发现它已经被十几个小组反复复制、魔改、再打补丁。那个瞬间我很清楚:如果这个项目继续锁在公司内网… · 2026/9/24 20:33:03

AI编程代理的安全盲区:核心代码为何必须人工兜底
AI编程代理的安全盲区:核心代码为何必须人工兜底

我平时带团队,也写代码,GitHub Copilot、Cursor、CodeWhisperer、通义灵码这几个主流编程代理都深度用过。说实话,AI补全普通代码和样板代码,效率提升是真的明显,但一旦涉及认证、权限、支付、加密这些核心模块&#x… · 2026/9/24 20:33:03

AI Agent本地部署实战:从LLM到工具调用的完整指南
AI Agent本地部署实战:从LLM到工具调用的完整指南

周六下午两点,我打开电脑,打算花两个小时把"AI Agent"从概念变成能跑的东西。不是看帖子,是真的装一个。两个小时后,我面前多了一个本地部署的Agent应用:它连上了DeepSeek的接口,挂着几个外部工具… · 2026/9/24 20:33:03

StableLM开源模型工程实践:可审计、可调试、可部署的LLM基础设施
StableLM开源模型工程实践:可审计、可调试、可部署的LLM基础设施

1. StableLM不是另一个“开源ChatGPT”,而是重新定义开源语言模型边界的实践Stability AI发布StableLM,这件事在2023年中旬的开源AI圈里,像一块石头砸进静水——表面涟漪不大,但底下暗流剧烈。很多人第一反应是:“又一… · 2026/9/24 20:33:03

RAG数据管道全流程:从分块到生产级落地的核心实践
RAG数据管道全流程:从分块到生产级落地的核心实践

说实话,我见过太多团队在RAG上栽跟头。刚接触时觉得这东西也不难:文档切一切,向量化存进去,用户问一句就检索出来拼给大模型,完事。结果真正上了生产环境才发现,分块和向量化只是最表面的那一层&#xff0c… · 2026/9/24 20:33:03

从零搭建AI Agent:两小时跑通LLM工具调用与记忆配置
从零搭建AI Agent:两小时跑通LLM工具调用与记忆配置

花两小时装了ai agent。。。。这个标题是我上周末给自己布置的作业。本来想的是“拉个镜像、填个API、跑个demo”,按说半小时就能收工。结果真动手才发现,两小时确实能把agent装起来,但从“装起来”到“能稳定干活”,中间隔了多少… · 2026/9/24 20:32:57

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码