macOS companion app
macOS-Signierung
Mac-Signierung (Debug-Builds)
scripts/package-mac-app.sh erstellt und paketiert die App in einem festen Pfad (dist/OpenClaw.app) und ruft anschließend scripts/codesign-mac-app.sh auf, um sie zu signieren. TCC-Berechtigungen sind an die Bundle-ID und die Codesignatur gebunden. Wenn beide über erneute Builds hinweg stabil bleiben (und sich die App in einem festen Pfad befindet), vergisst macOS die TCC-Freigaben (Benachrichtigungen, Bedienungshilfen, Bildschirmaufnahme, Mikrofon, Spracherkennung) nicht.
- Die Debug-Bundle-ID ist standardmäßig
ai.openclaw.mac.debug(mitBUNDLE_ID=...überschreibbar). - Node:
>=22.22.3 <23,>=24.15.0 <25oder>=25.9.0(package.jsondes Repositorys:engines). Das Paketierungsprogramm erstellt außerdem die Control UI (pnpm ui:build). - Standardmäßig ist eine echte Signierungsidentität erforderlich. Das Codesign-Skript wird mit einem Fehler beendet, wenn keine gefunden wird und
ALLOW_ADHOC_SIGNINGnicht festgelegt ist. Die Ad-hoc-Signierung (SIGN_IDENTITY="-") muss ausdrücklich aktiviert werden und bewahrt TCC-Berechtigungen nicht über erneute Builds hinweg. Siehe macOS-Berechtigungen. - Liest
SIGN_IDENTITYaus der Umgebung (z. B.export SIGN_IDENTITY="Apple Development: Your Name (TEAMID)"oder ein Developer-ID-Application-Zertifikat). Ist die Variable nicht festgelegt, wähltcodesign-mac-app.shautomatisch eine Identität in dieser Reihenfolge aus: Developer ID Application, Apple Distribution, Apple Development und anschließend die erste gefundene gültige Codesignaturidentität. CODESIGN_TIMESTAMP=auto(Standard) aktiviert vertrauenswürdige Zeitstempel nur für Developer-ID-Application-Signaturen. Legen Sieon/offfest, um das jeweilige Verhalten zu erzwingen.- Ergänzt Info.plist um
OpenClawBuildTimestamp(ISO8601 UTC) undOpenClawGitCommit(Kurz-Hash,unknown, falls nicht verfügbar), damit der Tab „Über“ den Build, Git und den Debug-/Release-Kanal anzeigen kann. - Führt nach der Signierung eine Team-ID-Prüfung durch und schlägt fehl, wenn eine Mach-O-Datei im Bundle eine andere Team-ID aufweist. Legen Sie
SKIP_TEAM_ID_CHECK=1fest, um die Prüfung zu umgehen.
Verwendung
# vom Repository-Stammverzeichnis ausscripts/package-mac-app.sh # wählt die Identität automatisch aus; Fehler, falls keine gefunden wirdSIGN_IDENTITY="Developer ID Application: Your Name" scripts/package-mac-app.sh # echtes ZertifikatALLOW_ADHOC_SIGNING=1 scripts/package-mac-app.sh # Ad-hoc (Berechtigungen bleiben nicht erhalten)SIGN_IDENTITY="-" scripts/package-mac-app.sh # ausdrücklich Ad-hoc (mit derselben Einschränkung)DISABLE_LIBRARY_VALIDATION=1 scripts/package-mac-app.sh # nur für Entwicklung: Umgehung bei abweichender Sparkle-Team-IDHinweis zur Ad-hoc-Signierung
SIGN_IDENTITY="-" deaktiviert die Hardened Runtime (--options runtime), um Abstürze zu verhindern, wenn die App eingebettete Frameworks (wie Sparkle) lädt, die nicht dieselbe Team-ID verwenden. Ad-hoc-Signaturen verhindern außerdem die dauerhafte Speicherung von TCC-Berechtigungen. Schritte zur Wiederherstellung finden Sie unter macOS-Berechtigungen.
Build-Metadaten für „Über“
Der Tab „Über“ liest OpenClawBuildTimestamp und OpenClawGitCommit aus Info.plist, um die Version, das Build-Datum, den Git-Commit und – über #if DEBUG – anzuzeigen, ob es sich um einen DEBUG-Build handelt. Führen Sie das Paketierungsprogramm nach Codeänderungen erneut aus, um diese Werte zu aktualisieren.