Documentation Index
Fetch the complete documentation index at: https://openclaw.zhcndoc.com/llms.txt
Use this file to discover all available pages before exploring further.
mac 签名(调试构建)
这个应用通常由scripts/package-mac-app.sh 构建,该脚本现在会:
- 设置一个稳定的调试 bundle 标识符:
ai.openclaw.mac.debug - 使用该 bundle id 写入 Info.plist(可通过
BUNDLE_ID=...覆盖) - 调用
scripts/codesign-mac-app.sh对主二进制和 app bundle 进行签名,使 macOS 将每次重新构建视为同一个已签名的 bundle,并保留 TCC 权限(通知、辅助功能、屏幕录制、麦克风、语音识别)。为了获得稳定的权限,请使用真实的签名身份;ad-hoc 为可选且不稳定(参见 macOS 权限)。 - 默认使用
CODESIGN_TIMESTAMP=auto;它会为 Developer ID 签名启用受信任的时间戳。设置CODESIGN_TIMESTAMP=off可跳过时间戳(离线调试构建)。 - 将构建元数据注入 Info.plist:
OpenClawBuildTimestamp(UTC)和OpenClawGitCommit(短哈希),以便 About 面板可以显示构建信息、git 信息和调试/发布通道。 - 打包默认使用 Node 24:脚本会运行 TS 构建和 Control UI 构建。Node 22 LTS,目前为
22.14+,仍然支持以保持兼容性。 - 从环境中读取
SIGN_IDENTITY。将export SIGN_IDENTITY="Apple Development: Your Name (TEAMID)"(或你的 Developer ID Application 证书)添加到 shell rc 中,即可始终使用你的证书进行签名。ad-hoc 签名需要通过ALLOW_ADHOC_SIGNING=1或SIGN_IDENTITY="-"明确启用(不建议用于权限测试)。 - 签名后运行 Team ID 审核,如果 app bundle 内任何 Mach-O 的签名 Team ID 不同则失败。设置
SKIP_TEAM_ID_CHECK=1可绕过。
使用方法
Ad-hoc 签名说明
当使用SIGN_IDENTITY="-"(ad-hoc)进行签名时,脚本会自动禁用 Hardened Runtime(--options runtime)。这是为了防止应用尝试加载与其不具有相同 Team ID 的内嵌框架(如 Sparkle)时崩溃。ad-hoc 签名也会破坏 TCC 权限持久化;请参见 macOS 权限 获取恢复步骤。
About 的构建元数据
package-mac-app.sh 会在 bundle 中写入:
OpenClawBuildTimestamp:打包时的 ISO8601 UTC 时间OpenClawGitCommit:短 git 哈希(若不可用则为unknown)
#if DEBUG)。在代码变更后运行打包脚本以刷新这些值。
原因
TCC 权限同时绑定到 bundle 标识符 和 代码签名。带有变化 UUID 的未签名调试构建会导致 macOS 在每次重新构建后忘记授权。对二进制进行签名(默认 ad-hoc)并保持固定的 bundle id/path(dist/OpenClaw.app)可在构建之间保留授权,做法与 VibeTunnel 方法一致。