OC
OpenClaw 中文解释版

给五岁小朋友也能看懂的说明书

简要总结

macOS Signing

这页说明书在教我们怎么给一个叫 OpenClaw 的苹果电脑(macOS)软件“签名”。签名就像给软件贴上一个特别的、独一无二的贴纸。有了这个贴纸,电脑才能记住你允许这个软件做什么,比如用麦克风或者录屏幕。这页特别适合你在自己电脑上测试软件,想让电脑记住你的选择时看。

五岁小孩版解释

这页讲的是怎么给一个在苹果电脑上测试用的软件“签名”。签名就像给软件一个特别的身份证,告诉电脑:“这个软件是我做的,每次都是同一个哦!”这样,电脑就不会忘记你允许这个软件做什么事情了。

有一个叫 package-mac-app.sh 的脚本(脚本就像一张做事情的清单)会帮我们打包和签名软件。它会做下面这几件重要的事:

  1. 给软件一个固定的名字。它会用一个固定的“包裹标识符”,叫 ai.openclaw.mac.debug。你可以把它想成软件在电脑里的家庭地址,每次都不变。
  2. 给软件签名。它会叫另一个叫 codesign-mac-app.sh 的脚本来给软件签名。这样,每次你重新做这个软件,电脑都认为它是同一个,就不会丢掉你之前同意的权限(比如通知、录屏、用麦克风)。要小心哦,如果只是随便签个名(叫“临时签名”),权限可能还是记不住。
  3. 加上时间戳。默认会给签名加上一个可信的时间戳,这就像在签名上盖个日期章。如果你在没联网的时候做软件,可以设置 CODESIGN_TIMESTAMP=off 来跳过这一步。
  4. 写上软件的信息。它会把软件是什么时候做的、用的是哪一份代码,写进软件自己的信息文件里。这样你在软件的“关于”页面就能看到这些信息了。
  5. 检查签名的人是不是同一个。签完名后,它会检查软件里面所有部分是不是同一个人(或团队)签的。如果不是,它会报错。如果你确定没问题,可以设置 SKIP_TEAM_ID_CHECK=1 来跳过检查。

做这件事需要什么? 你需要先安装 Node.js,并且版本是 22 或更高。因为脚本需要用它来构建软件。

怎么告诉脚本用谁的签名? 脚本会从电脑的环境里找一个叫 SIGN_IDENTITY 的东西,这就是“签名身份”,就像你的签名印章。你最好提前设置好它。比如,在你的电脑设置里加上一行:export SIGN_IDENTITY="Apple Development: 你的名字 (TEAMID)"。如果你想用“临时签名”(不推荐,因为权限记不住),需要明确告诉脚本 ALLOW_ADHOC_SIGNING=1 或者 SIGN_IDENTITY="-"

具体怎么用呢? 打开终端,进到软件代码的根目录,然后可以输入下面的命令。记住,不同的命令效果不一样:

  1. 直接运行 scripts/package-mac-app.sh。脚本会自己找签名身份,如果找不到就会出错。
  2. 运行 SIGN_IDENTITY="Developer ID Application: Your Name" scripts/package-mac-app.sh。这是用你真正的开发者证书签名,最好用这个。
  3. 运行 ALLOW_ADHOC_SIGNING=1 scripts/package-mac-app.shSIGN_IDENTITY="-" scripts/package-mac-app.sh。这是用“临时签名”,电脑可能记不住你给的权限。
  4. 运行 DISABLE_LIBRARY_VALIDATION=1 scripts/package-mac-app.sh。这个命令是给开发者的,用来解决一个叫 Sparkle 的更新工具可能带来的签名冲突问题,平时不太用。

关于“临时签名”要特别注意 当你用 SIGN_IDENTITY="-" 做临时签名时,脚本会自动关掉一个叫“强化运行时”的安全功能。这是为了防止软件崩溃。但临时签名还是会让电脑记不住权限。如果权限丢了,你需要去另一页叫“macOS permissions”的说明书里找恢复步骤。

为什么要做签名? 因为苹果电脑会把权限(比如允许软件使用麦克风)和软件的名字(包裹标识符)以及签名牢牢绑在一起。以前测试时软件没签名,每次名字还变,导致电脑每次都要重新问你要不要授权。现在固定名字并签名,就能让电脑记住你的选择了。