mac-Signierung (Debug-Builds)
Diese App wird üblicherweise ausscripts/package-mac-app.sh erstellt, das jetzt:
- eine stabile Debug-Bundle-ID setzt:
ai.openclaw.mac.debug - die Info.plist mit dieser Bundle-ID schreibt (Überschreiben über
BUNDLE_ID=...) scripts/codesign-mac-app.shaufruft, um das Haupt-Binary und das App-Bundle zu signieren, sodass macOS jeden Neuaufbau als dasselbe signierte Bundle behandelt und TCC-Berechtigungen (Benachrichtigungen, Bedienungshilfen, Bildschirmaufzeichnung, Mikrofon, Sprache) beibehält. Für stabile Berechtigungen verwenden Sie eine echte Signieridentität; Ad-hoc ist optional und fragil (siehe macOS-Berechtigungen).- standardmäßig
CODESIGN_TIMESTAMP=autoverwendet; dies aktiviert vertrauenswürdige Zeitstempel für Developer-ID-Signaturen. Setzen SieCODESIGN_TIMESTAMP=off, um die Zeitstempelung zu überspringen (Offline-Debug-Builds). - Build-Metadaten in die Info.plist injiziert:
OpenClawBuildTimestamp(UTC) undOpenClawGitCommit(kurzer Hash), damit der „Über“-Bereich Build-, Git- sowie Debug/Release-Kanal anzeigen kann. - Packaging erfordert Node 22+: Das Skript führt TS-Builds und den Control-UI-Build aus.
SIGN_IDENTITYaus der Umgebung liest. Fügen Sieexport SIGN_IDENTITY="Apple Development: Your Name (TEAMID)"(oder Ihr Developer ID Application-Zertifikat) Ihrer Shell-RC hinzu, um immer mit Ihrem Zertifikat zu signieren. Ad-hoc-Signierung erfordert ein explizites Opt-in überALLOW_ADHOC_SIGNING=1oderSIGN_IDENTITY="-"(nicht empfohlen für Berechtigungstests).- nach der Signierung eine Team-ID-Prüfung ausführt und fehlschlägt, wenn irgendein Mach-O innerhalb des App-Bundles von einer anderen Team-ID signiert ist. Setzen Sie
SKIP_TEAM_ID_CHECK=1, um dies zu umgehen.
Verwendung
Hinweis zur Ad-hoc-Signierung
Beim Signieren mitSIGN_IDENTITY="-" (Ad-hoc) deaktiviert das Skript automatisch die Hardened Runtime (--options runtime). Dies ist erforderlich, um Abstürze zu verhindern, wenn die App versucht, eingebettete Frameworks (wie Sparkle) zu laden, die nicht dieselbe Team-ID teilen. Ad-hoc-Signaturen unterbrechen außerdem die Persistenz von TCC-Berechtigungen; siehe macOS-Berechtigungen für Wiederherstellungsschritte.
Build-Metadaten für „Über“
package-mac-app.sh versieht das Bundle mit:
OpenClawBuildTimestamp: ISO8601 UTC zum Packaging-ZeitpunktOpenClawGitCommit: kurzer Git-Hash (oderunknown, falls nicht verfügbar)
#if DEBUG). Führen Sie den Packager aus, um diese Werte nach Code-Änderungen zu aktualisieren.
Warum
TCC-Berechtigungen sind an die Bundle-ID und die Code-Signatur gebunden. Unsigned Debug-Builds mit wechselnden UUIDs führten dazu, dass macOS die Freigaben nach jedem Neuaufbau vergaß. Das Signieren der Binaries (standardmäßig Ad-hoc) und das Beibehalten einer festen Bundle-ID/-Pfads (dist/OpenClaw.app) bewahrt die Freigaben zwischen Builds und entspricht dem VibeTunnel-Ansatz.