macOS companion app
Podpisywanie w systemie macOS
Podpisywanie w macOS (kompilacje debugowania)
Skrypt scripts/package-mac-app.sh kompiluje i pakuje aplikację do stałej ścieżki (dist/OpenClaw.app), a następnie wywołuje scripts/codesign-mac-app.sh, aby ją podpisać. Uprawnienia TCC są powiązane z identyfikatorem pakietu i podpisem kodu; zachowanie ich obu bez zmian (oraz aplikacji w stałej ścieżce) między kolejnymi kompilacjami zapobiega zapominaniu przez macOS przyznanych uprawnień TCC (powiadomienia, dostępność, nagrywanie ekranu, mikrofon, mowa).
- Domyślny identyfikator pakietu kompilacji debugowania to
ai.openclaw.mac.debug(można go zastąpić za pomocąBUNDLE_ID=...). - Node:
>=22.19.0 <23lub>=23.11.0(enginesw plikupackage.jsonrepozytorium). Skrypt pakujący kompiluje również interfejs Control UI (pnpm ui:build). - Domyślnie wymaga rzeczywistej tożsamości podpisującej; jeśli żadna nie zostanie znaleziona, a zmienna
ALLOW_ADHOC_SIGNINGnie jest ustawiona, skrypt podpisujący kończy działanie z błędem. Podpisywanie ad hoc (SIGN_IDENTITY="-") wymaga jawnego włączenia i nie zachowuje uprawnień TCC między kolejnymi kompilacjami. Zobacz uprawnienia macOS. - Odczytuje
SIGN_IDENTITYze środowiska (np.export SIGN_IDENTITY="Apple Development: Your Name (TEAMID)"lub certyfikat Developer ID Application). Jeśli zmienna nie jest ustawiona, skryptcodesign-mac-app.shautomatycznie wybiera tożsamość w następującej kolejności: Developer ID Application, Apple Distribution, Apple Development, a następnie pierwsza znaleziona prawidłowa tożsamość do podpisywania kodu. CODESIGN_TIMESTAMP=auto(wartość domyślna) włącza zaufane znaczniki czasu tylko dla podpisów Developer ID Application. Ustawonluboff, aby wymusić odpowiednie zachowanie.- Dodaje do Info.plist pola
OpenClawBuildTimestamp(ISO8601 UTC) iOpenClawGitCommit(skrócony skrót,unknown, jeśli jest niedostępny), dzięki czemu karta informacji może wyświetlać kompilację, rewizję Git oraz kanał debugowania lub wydania. - Po podpisaniu przeprowadza kontrolę Team ID i kończy się niepowodzeniem, jeśli którykolwiek plik Mach-O w pakiecie ma inny Team ID. Ustaw
SKIP_TEAM_ID_CHECK=1, aby pominąć tę kontrolę.
Użycie
# z katalogu głównego repozytoriumscripts/package-mac-app.sh # automatycznie wybiera tożsamość; zgłasza błąd, jeśli żadnej nie znalezionoSIGN_IDENTITY="Developer ID Application: Your Name" scripts/package-mac-app.sh # rzeczywisty certyfikatALLOW_ADHOC_SIGNING=1 scripts/package-mac-app.sh # ad hoc (uprawnienia nie zostaną zachowane)SIGN_IDENTITY="-" scripts/package-mac-app.sh # jawne ad hoc (to samo zastrzeżenie)DISABLE_LIBRARY_VALIDATION=1 scripts/package-mac-app.sh # obejście niezgodności Team ID Sparkle, tylko do programowaniaUwaga dotycząca podpisywania ad hoc
SIGN_IDENTITY="-" wyłącza Hardened Runtime (--options runtime), aby zapobiec awariom podczas ładowania przez aplikację osadzonych frameworków (takich jak Sparkle), które nie mają tego samego Team ID. Podpisy ad hoc uniemożliwiają również zachowywanie uprawnień TCC; procedurę przywracania opisano w sekcji uprawnienia macOS.
Metadane kompilacji na karcie informacji
Karta informacji odczytuje pola OpenClawBuildTimestamp i OpenClawGitCommit z Info.plist, aby wyświetlić wersję, datę kompilacji, rewizję Git oraz informację, czy jest to kompilacja DEBUG (za pomocą #if DEBUG). Po zmianach w kodzie ponownie uruchom skrypt pakujący, aby odświeżyć te wartości.