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

CodMate 构建与发布教程:Makefile + SwiftPM 打包 Developer ID 签名 DMG 的完整流程

发布时间:2026/11/5 1:26:31 来源:云帆数科 栏目:资讯中心
CodMate 构建与发布教程:Makefile + SwiftPM 打包 Developer ID 签名 DMG 的完整流程
【免费下载链接】codmateCodMate is a macOS SwiftUI app for managing CLI AI sessions: browse, search, organize, resume, and review work produced by Codex, Claude Code, and Gemini CLI. It focuses on speed, a compact three-column UI, and “ship it” workflows like Project Review (Git Changes) and one-click Resume/New.项目地址https://gitcode.com/gh_mirrors/co/codmate点击查看免费下载CodMate 是一款 macOS SwiftUI 应用用于管理 Codex、Claude Code 和 Gemini CLI 的会话。本文带你完整走一遍 CodMate 的构建与发布流程从 SwiftPM 编译、Makefile目标到 Developer ID 签名、公证notarization和 DMG 打包帮助你快速上手 macOS 应用发布。构建环境准备macOS Swift 6 工具链 CodMate 采用纯 SwiftPM 构建无 Xcode 工程文件因此环境要求很简单依赖要求用途macOS13.5最低部署目标Swift6 工具链编译主程序与notify辅助工具Xcode Command Line Tools必须安装提供xcrun actool编译资源目录Developer ID Application 证书发布必须签名应用与 DMGcreate-dmg可选生成带拖拽安装的漂亮 DMG缺失时自动回退hdiutil 本地开发调试不需要签名证书构建脚本会自动退回到 ad-hoc 签名。获取源码一行命令克隆仓库git clone https://gitcode.com/gh_mirrors/co/codmate cd codmate项目根目录的 Makefile 是构建入口输入make help可以查看所有可用目标make help构建体系一览Makefile 目标速查表 ⚙️Makefile 中封装了完整的构建流程核心目标如下目标说明示例buildSwiftPM 调试构建make buildreleaseSwiftPM 发布构建make releasetest运行 SwiftPM 测试make testrun调试构建并直接启动应用make runapp生成CodMate.app应用包make app VER1.2.3dmg生成 Developer ID 签名 DMGmake dmg VER1.2.3zip将 DMG 压缩为 zip 发布包make zip VER1.2.3clean清理构建产物make clean两个关键环境变量VER营销版本号写入CFBundleShortVersionString如1.4.0ARCH目标架构支持arm64、x86_64也可以写arm64 x86_64构建通用二进制。本地快速调试make run 一步启动开发阶段最常用的命令make run它会以本机架构做一次 debug 构建自动使用 ad-hoc 签名然后打开build/CodMate.app。如果需要查看运行时日志Makefile 还提供了几个调试目标make debug终端前台输出程序日志make debug-app后台启动应用并流式输出统一日志make debug-logs在应用运行时实时追踪log stream输出make debug-file日志同时写入logs/debug.log。应用打包make app 背后的构建流程 执行make app VER1.2.3时实际调用的是 scripts/create-app-bundle.sh它完成了完整的打包链路多架构编译对ARCH_MATRIX中的每个架构执行swift build -c release --arch arch架构校验用lipo -info检查产物架构是否纯净多架构时用lipo -create合并为 universal 二进制二进制瘦身默认执行strip可用STRIP0关闭组装 .app 包复制主程序与codmate-notify通知助手、写入Info.plistBundle ID 为ai.umate.codmate编译资源用xcrun actool编译 assets/Assets.xcassets生成Assets.car与应用图标打入打包数据复制 payload/providers.json、payload/terminals.json、提示词与内部技能等内置资源。版本号策略由BUILD_NUMBER_STRATEGY控制策略构建号生成方式date默认yyyymmddHHMM时间戳如202510291430gitgit rev-list --count HEAD提交计数counter本地计数器文件自增脚本还会把 Git tag、commit 短哈希和 dirty 状态写入Info.plist方便在关于面板中追踪产物来源。发布流程核心make dmg 生成签名 DMG # 单架构当前主机架构 make dmg VER1.4.0 # 指定架构 make dmg VER1.4.0 ARCHarm64 # 双架构同时产出 codmate-arm64.dmg 和 codmate-x86_64.dmg make dmg VER1.4.0 ARCHarm64 x86_64make dmg调用的是 scripts/macos-build-notarized-dmg.sh每个架构会经历五个阶段打包复用上面的create-app-bundle.sh生成该架构的CodMate-arch.app签名检测到 Developer ID 证书时先签内部二进制codmate-notify再签主程序最后签整个 bundle带--options runtime硬运行时保护并用codesign --verify --deep --strict自检。找不到证书时自动降级为 ad-hoc 签名并给出警告制作 DMG优先使用create-dmg生成带 拖入 Applications 图标的安装盘失败或未安装时回退到hdiutil create公证将 DMG 提交给 Apple 公证服务见下一节装订验证xcrun stapler staplestapler validate完成收尾。产物输出到artifacts/release/目录文件名为codmate-arch.dmg。公证Notarization的两种认证方式macOS 要求分发给普通用户的 Developer ID 应用必须经过 Apple 公证否则 Gatekeeper 会拦截。脚本支持两种提交方式且会自动识别NOTARY_MODEauto方式一Keychain Profile推荐CI 友好xcrun notarytool store-credentials AC_PROFILE \ --team-id YOUR_TEAM_ID \ --apple-id youapple.com \ --password app-specific-password APPLE_NOTARY_PROFILEAC_PROFILE make dmg VER1.4.0方式二Apple ID 应用专用密码APPLE_IDyouapple.com \ APPLE_PASSWORDxxxx-xxxx-xxxx-xxxx \ TEAM_IDYOURTEAMID \ make dmg VER1.4.0 脚本支持从项目根目录的.env文件读取APPLE_SIGNING_IDENTITY、APPLE_ID、APPLE_PASSWORD、APPLE_TEAM_ID命令行显式导出的变量优先无需在 CI 日志中暴露密码。如果设置了SKIP_NOTARIZATION1或未提供任何凭据脚本会跳过公证并明确提示——这样的 DMG 只适合内测不能公开发布。分发最后一公里zip 打包与产物校验DMG 公证完成后通常还会再压一层 zip 方便下载渠道分发make zip VER1.4.0它会在artifacts/release/下为每个 DMG 生成同名.zip。发布前建议手动做一次终检codesign --verify --deep --strict build/CodMate.app xcrun stapler validate artifacts/release/codmate-arm64.dmg此外项目依赖变更后记得更新第三方许可声明make notices该目标通过 scripts/gen-third-party-notices.py 扫描 Package.resolved 与本地依赖缓存重新生成THIRD-PARTY-NOTICES.md任何缺失许可文件的依赖都会让构建失败。常见问题排查 ️现象原因与解决error: VER is requiredapp/dmg/zip目标必须传VER例如make app VER1.2.3[warn] libghostty.a not found内嵌终端依赖的 Ghostty 静态库缺失需先按ghostty/目录说明构建对应架构的libghostty.aSigning identity not found钥匙串中没有 Developer ID 证书会降级 ad-hoc 签名发布前请在 Xcode 的 Keychain Access 中确认证书存在DMG 缺少拖拽安装图标未安装create-dmg回退使用了hdiutil安装create-dmg后重跑make dmg即可用户打开 DMG 提示已损坏未公证或证书链不完整补齐公证凭据重新执行make dmg相关文档与源码位置 构建总览文档scripts/BUILD.md构建入口 MakefileMakefile应用打包脚本scripts/create-app-bundle.shDMG 签名与公证脚本scripts/macos-build-notarized-dmg.shSwiftPM 包描述依赖 GhosttyKit 与 MCP Swift SDKPackage.swift许可声明生成器scripts/gen-third-party-notices.py构建与发布说明README.md流程回顾make run日常调试 →make app VERx.y.z出应用包 →make dmg VERx.y.z签名并公证出 DMG →make zip生成发布产物。掌握这条流水线你就能独立完成 CodMate 从源码到可分发 DMG 的完整构建与发布。赞分享【免费下载链接】codmateCodMate is a macOS SwiftUI app for managing CLI AI sessions: browse, search, organize, resume, and review work produced by Codex, Claude Code, and Gemini CLI. It focuses on speed, a compact three-column UI, and “ship it” workflows like Project Review (Git Changes) and one-click Resume/New.项目地址https://gitcode.com/gh_mirrors/co/codmate点击查看免费下载相关推荐ILSpy macOS 发布全流程CI 无签名构建、离线签名公证与 DMG 打包实战ILSpy macOS 发布全流程CI 无签名构建、离线签名公证与 DMG 打包实战 本篇指南以 ILSpy 仓库中 BuildTools/packaging逆向工程开发工具BaoCut macOS 打包发布指南Developer ID 签名、Apple 公证与 Appcast 分批推送完整教程BaoCut macOS 打包发布指南Developer ID 签名、Apple 公证与 Appcast 分批推送完整教程 BaoCut 是一款带可编辑时间线为什么Trimmy无法帮你粘贴macOS辅助功能权限配置与避坑完全指南为什么Trimmy无法帮你粘贴macOS辅助功能权限配置与避坑完全指南 如果你在使用 Trimmy一款把多行命令压成一行、让复制的 shell 片段一次粘贴上一篇构建高效的内部开发者平台(IDP)90DaysOfDevOps实战指南下一篇使用 Transformers 微调 Wav2Vec2 完成音频分类单卡与多卡实战指南FlexGen 仓库示例解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

告别广告弹窗:6款开源Android应用实战指南
告别广告弹窗:6款开源Android应用实战指南

告别广告弹窗:6款开源Android应用实战指南 【免费下载链接】open-source-android-apps Open-Source Android Apps 项目地址: https://gitcode.com/gh_mirrors/op/open-source-android-apps 换机后把常用应用逐个装回来,不少一打开就是开屏广告&am… · 2026/11/5 1:25:31

OpenCreator:Codex 内核的开源 AI 创作工作台
OpenCreator:Codex 内核的开源 AI 创作工作台

OpenCreator:Codex 内核的开源 AI 创作工作台 【免费下载链接】OpenCreator Formerly KrillinAI, VideoTranslation and Dubbing Tool for 120 Languages. Open-source AI workspace for creators, powered by Codex. Video downloader, video translation, create … · 2026/11/5 1:25:31

API调试工具汇总:Apifox、Reqable、Bruno、Insomnia、Yaak、WebCurl
API调试工具汇总:Apifox、Reqable、Bruno、Insomnia、Yaak、WebCurl

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 1:25:31

B150/B250/H110老主板BIOS魔改:微码注入与刷写避坑
B150/B250/H110老主板BIOS魔改:微码注入与刷写避坑

简介:这份工具包面向希望在不更换主板的前提下升级CPU的DIY玩家与硬件爱好者,聚焦B150、B250、H110等芯片组主板对8代、9代Intel处理器的兼容问题,核心是配合BIOS修改与刷写流程,并提供一键修改思路以降低操作门槛,属于… · 2026/11/5 2:09:47

T+二开级联自由项:JS扩展实现多级联动的低代码方案
T+二开级联自由项:JS扩展实现多级联动的低代码方案

简介:本资源是面向T二次开发工程师的级联自由项实战解决方案,聚焦中小企业销售订单等业务场景中多级联动字段的动态控制需求,通过JS前端扩展与.NET后端自定义服务协同实现,适合具备基础JavaScript和C#开发能力的中高级开发者快速落… · 2026/11/5 2:09:47

Python实现SiouxFalls用户均衡与Frank-Wolfe算法
Python实现SiouxFalls用户均衡与Frank-Wolfe算法

简介:面向交通工程、交通网络分析与交通分配方向的学习者,这份材料以经典SiouxFalls网络为案例,用Python实现Frank-Wolfe算法求解UE用户均衡,帮助理解“无用户可通过单方面改变路径降低出行费用”的均衡条件。包内共7个文件&#… · 2026/11/5 2:09:47

1950-2018中国台风shp:GeoPandas轨迹重建与避坑指南
1950-2018中国台风shp:GeoPandas轨迹重建与避坑指南

简介:覆盖1950至2018年中国沿海台风历史记录的Shapefile矢量数据集,面向气象与气候研究、灾害风险管理、城市规划及GIS空间分析的从业者与高年级学生,用于复盘台风登陆位置与移动路径,支撑频率统计、强度分级、路径特征与风暴潮模… · 2026/11/5 2:09:47

cocos2d图集合并与plist生成:imgsTools实践
cocos2d图集合并与plist生成:imgsTools实践

简介:imgsTools 是一款面向游戏开发者的图片合并工具,基于 VALib 图像处理库以及 MFC、GDI 技术构建,主要用于把多张素材图合并输出为透明 PNG、GIF 或 JPEG,并同步生成 Cocos2d 引擎可直接导入的 .plis 资源清单,解决… · 2026/11/5 2:09:47

WinForm JSON转Excel实战:嵌套展平、中文乱码与动态字段处理
WinForm JSON转Excel实战:嵌套展平、中文乱码与动态字段处理

简介:这是一份面向C#初学者与WinForm开发者的实用工具型资源,解决JSON格式数据快速导入Excel的常见办公自动化需求,适用于数据分析、接口调试及本地数据可视化等轻量级场景。压缩包共61个文件,总大小192KB,包含14个核心… · 2026/11/5 2:08:47

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

多智能体协作系统架构设计与实践优化
多智能体协作系统架构设计与实践优化

1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中… · 2026/11/5 0:00:39

大模型系统性入门实战指南:从原理到部署微调的全链路路线
大模型系统性入门实战指南:从原理到部署微调的全链路路线

提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#… · 2026/11/5 0:00:39

鸿蒙文件系统沙箱机制解析与开发实践
鸿蒙文件系统沙箱机制解析与开发实践

1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的… · 2026/11/5 0:00:39

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

了解更多?预约专属演示

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

企业微信二维码