尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Orca macOS 权限与签名:entitlements 验证与发布签名完整指南

Orca macOS 权限与签名:entitlements 验证与发布签名完整指南 Orca macOS 权限与签名entitlements 验证与发布签名完整指南【免费下载链接】orcaOrca is the ADE for working with a fleet of parallel agents. Run any coding agent with your own subscription. Available on desktop, mobile and VPS.项目地址: https://gitcode.com/GitHub_Trending/orca48/orcaOrca 是一个用于并行运行多 Agent 的 ADEAgent 开发环境支持桌面端、移动端和 VPS 部署。本文带你完整看懂 Orca 在 macOS 上的权限声明entitlements与发布签名机制从权限清单到 hardened runtime、公证Notarization再到自动化校验脚本帮助你快速理解它的构建与发布安全体系。为什么 macOS 权限与签名这么重要macOS 对第三方应用有三道关卡任何一道没过用户要么无法打开应用要么权限反复失效权限声明Entitlements应用要使用麦克风、摄像头、蓝牙等能力必须先在清单里报备系统弹窗才可能合法弹出代码签名Code Signing发布版必须使用 Developer ID 证书签名并开启 Hardened Runtime否则系统直接拒跑公证NotarizationApple 公证票据让权限授权TCC与应用身份稳定绑定——换一次构建用户之前授予的文件夹访问权限不会莫名失效。Orca 恰好把这三件事都做成了可验证的工程化流程。两个 entitlements 文件主应用与辅助应用Orca 在resources/build/目录下维护了两份 macOS 权限清单文件用途entitlements.mac.plist主应用 Orca.app 使用的权限清单entitlements.computer-use.mac.plistOrca Computer Use 辅助应用使用的权限清单主清单中声明了 9 项能力每一项都对应一个具体的产品功能com.apple.security.automation.apple-events允许终端启动的开发者工具自动化本地应用com.apple.security.device.audio-input桌面语音捕获语音输入com.apple.security.device.bluetooth/camera/usb连接开发设备与模拟器com.apple.security.personal-information.location位置信息com.apple.security.cs.allow-jit、allow-unsigned-executable-memoryElectron / Chromium 运行所需com.apple.security.cs.allow-dyld-environment-variables打包后二进制加载所需。配套的用户可见说明比如为什么 Orca 要访问麦克风写在打包配置的extendInfo里见 config/electron-builder.config.cjs 中的NSMicrophoneUsageDescription等字段——用户看到弹窗时文案来自这里。自动化校验为什么重复的权限键名是个坑一个隐蔽的坑plist 里出现重复的 keyplutil -lint能通过但发布签名时codesign会直接拒绝。为此 Orca 编写了专门的校验脚本 verify-macos-entitlements.mjs它逐行扫描 XML按dict层级检查 key 是否重复并报告首次出现行号 / 重复行号pnpm verify:macos-entitlements该命令已在 package.json 中注册。脚本只校验、不修改文件——一旦发现重复键就报错退出确保问题在进入签名阶段前被拦下。发布签名三道硬性开关打包行为集中在 config/electron-builder.config.cjs 中由环境变量ORCA_MAC_RELEASE1等开关控制见 第22-43行。正式发布时同时打开三个开关开关配置项作用强制签名forceCodeSigning没有签名证书时构建直接失败而不是悄悄降级成 ad-hoc 包强化运行时hardenedRuntime开启 Hardened Runtime是公证的前提自动公证notarize签名后自动向 Apple 提交公证对应的关键配置位于 macos 打包段entitlements与entitlementsInherit都指向 entitlements.mac.plist保证主应用和所有子进程继承同一份权限注释中特别解释了为什么开发渠道构建也要公证TCC 把授权锚定在标识符 团队上与代码哈希无关没有公证票据每 24 小时一次的构建都会让用户已授予的 Documents/Desktop/Downloads 访问权限静默失效。签名前必须先签内嵌应用Orca 的 macOS 包里还嵌套了几个独立可执行体Orca Computer Use.app、orca-notification-status、orca-keyboard-layout。构建脚本在打包前先用codesign --force --deep --sign identity --options runtime --timestamp为它们签名并立即--verify --strict校验再让外层 Orca.app 封存。相关实现见 signMacComputerUseHelper 与 codesignArgs。签名身份的选择逻辑见 findInstalledMacSigningIdentity发布构建只接受Developer ID Application或Apple Distribution本地开发才允许Apple Development且回退到 ad-hoc-签名。一键发布构建与所需凭据发布入口是一条命令见 package.jsonpnpm build:mac:release它会先运行 verify-macos-release-env.mjs 做凭据守门——缺少任何一项都立即失败避免 CI 日志看起来成功、实际产物却是未签名应用。所需环境变量变量用途APPLE_ID/APPLE_APP_SPECIFIC_PASSWORD公证账户与专用密码APPLE_TEAM_IDApple 开发者团队 IDCSC_LINK/CSC_KEY_PASSWORDDeveloper ID 证书p12 压缩包及密码本地调试则使用pnpm build:mac做 ad-hoc 构建无需任何 Apple 凭据即可在开发机上启动验证。快速上手验证你的构建在你自己的 Orca 工作副本中按顺序执行以下检查即可复现发布流水线的核心验证pnpm verify:macos-entitlements # 1. 检查 entitlements 无重复键 pnpm build:mac # 2. 本地 ad-hoc 构建 codesign --verify --deep --strict \ --verbose2 dist/Orca.app # 3. 手动校验产物签名如果你想进一步理解权限如何映射到产品功能建议阅读以下资料权限清单resources/build/entitlements.mac.plist打包与签名配置config/electron-builder.config.cjsentitlements 校验脚本config/scripts/verify-macos-entitlements.mjs发布环境守门脚本config/scripts/verify-macos-release-env.mjs常见问题FAQQ1本地构建不签名能打开吗可以。本地构建走 ad-hoc 路径不启用 hardened runtime 和公证适合快速验证。Q2为什么更新后文件夹权限有时会失效macOS 的 TCC 授权绑定应用身份。Orca 通过公证票据让身份在版本间保持稳定见 配置注释这是它连开发渠道构建也坚持公证的原因。Q3发布构建为何宁败勿降级forceCodeSigning保证签名不可用时构建直接报错而不是生成一个看起来能发的 ad-hoc 产物混入发布日志。总结Orca 的 macOS 发布体系可以用三句话概括权限清单集中管理并用自动化脚本拦截重复键错误内嵌辅助应用先签后封、签后必验发布构建强制 Developer ID 签名 Hardened Runtime 公证缺一即失败。这套机制既保证了用户权限授权跨版本稳定也让每一次发布都有可验证的安全底线。【免费下载链接】orcaOrca is the ADE for working with a fleet of parallel agents. Run any coding agent with your own subscription. Available on desktop, mobile and VPS.项目地址: https://gitcode.com/GitHub_Trending/orca48/orca创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表