podpisywanie mac (debug buildy)
Ta aplikacja jest zwykle budowana z użyciem skryptuscripts/package-mac-app.sh, który obecnie:
- ustawia stabilny identyfikator pakietu dla debugów:
ai.openclaw.mac.debug - zapisuje Info.plist z tym identyfikatorem pakietu (nadpisanie przez
BUNDLE_ID=...) - wywołuje
scripts/codesign-mac-app.sh, aby podpisać główny plik binarny i pakiet aplikacji, tak aby macOS traktował każdą przebudowę jako ten sam podpisany pakiet i zachowywał uprawnienia TCC (powiadomienia, dostępność, nagrywanie ekranu, mikrofon, mowa). Dla stabilnych uprawnień użyj rzeczywistej tożsamości podpisu; podpis ad-hoc jest opcjonalny i kruchy (zob. uprawnienia macOS). - domyślnie używa
CODESIGN_TIMESTAMP=auto; włącza to zaufane znaczniki czasu dla podpisów Developer ID. UstawCODESIGN_TIMESTAMP=off, aby pominąć stemplowanie czasem (offline debug buildy). - wstrzykuje metadane buildu do Info.plist:
OpenClawBuildTimestamp(UTC) orazOpenClawGitCommit(krótki hash), aby panel „About” mógł pokazywać informacje o buildzie, git oraz kanale debug/release. - Pakowanie wymaga Node 22+: skrypt uruchamia buildy TS oraz build interfejsu Control UI.
- odczytuje
SIGN_IDENTITYze środowiska. Dodajexport SIGN_IDENTITY="Apple Development: Your Name (TEAMID)"(lub swój certyfikat Developer ID Application) do rc swojej powłoki, aby zawsze podpisywać swoim certyfikatem. Podpis ad-hoc wymaga jawnego włączenia przezALLOW_ADHOC_SIGNING=1lubSIGN_IDENTITY="-"(niezalecane do testowania uprawnień). - po podpisaniu wykonuje audyt Team ID i kończy się niepowodzeniem, jeśli jakikolwiek Mach-O wewnątrz pakietu aplikacji jest podpisany innym Team ID. Ustaw
SKIP_TEAM_ID_CHECK=1, aby pominąć.
Użycie
Uwaga dotycząca podpisywania ad-hoc
Podczas podpisywania za pomocąSIGN_IDENTITY="-" (ad-hoc) skrypt automatycznie wyłącza Hardened Runtime (--options runtime). Jest to konieczne, aby zapobiec awariom, gdy aplikacja próbuje załadować osadzone frameworki (takie jak Sparkle), które nie współdzielą tego samego Team ID. Podpisy ad-hoc również przerywają trwałość uprawnień TCC; zob. uprawnienia macOS w celu uzyskania kroków odzyskiwania.
Metadane buildu dla „About”
package-mac-app.sh stempluje pakiet następującymi danymi:
OpenClawBuildTimestamp: ISO8601 UTC w momencie pakowaniaOpenClawGitCommit: krótki hash gita (lubunknown, jeśli niedostępny)
#if DEBUG). Uruchom pakowacz, aby odświeżyć te wartości po zmianach w kodzie.
Dlaczego
Uprawnienia TCC są powiązane z identyfikatorem pakietu oraz podpisem kodu. Niezabezpieczone debug buildy ze zmieniającymi się UUID powodowały, że macOS zapominał przyznane zgody po każdej przebudowie. Podpisywanie plików binarnych (domyślnie ad-hoc) i utrzymywanie stałego identyfikatora pakietu/ścieżki (dist/OpenClaw.app) zachowuje zgody pomiędzy buildami, zgodnie z podejściem VibeTunnel.