新闻详情

新闻详情

首页 / 资讯中心 / 详情

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

发布时间:2026/11/12 8:12:50来源:尧图网络
构建与发布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),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/11 13:52:51

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/10 19:42:40

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/11 9:31:44

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/11 5:36:08

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/11 15:37:39

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/10 17:14:10

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉