macOS companion app
Firma per macOS
Firma mac (build di debug)
scripts/package-mac-app.sh compila e impacchetta l'app in un percorso fisso (dist/OpenClaw.app), quindi richiama scripts/codesign-mac-app.sh per firmarla. Le autorizzazioni TCC sono associate all'ID del bundle e alla firma del codice; mantenere entrambi stabili (e l'app in un percorso fisso) tra le ricompilazioni impedisce a macOS di dimenticare le autorizzazioni TCC concesse (notifiche, accessibilità, registrazione dello schermo, microfono, riconoscimento vocale).
- Per impostazione predefinita, l'identificatore del bundle di debug è
ai.openclaw.mac.debug(sostituibile conBUNDLE_ID=...). - Node:
>=22.22.3 <23,>=24.15.0 <25o>=25.9.0(package.jsonenginesdel repository). Il programma di packaging compila anche l'interfaccia di controllo (pnpm ui:build). - Per impostazione predefinita richiede un'identità di firma reale; lo script di firma del codice termina con un errore se non ne viene trovata alcuna e
ALLOW_ADHOC_SIGNINGnon è impostato. La firma ad hoc (SIGN_IDENTITY="-") deve essere abilitata esplicitamente e non mantiene le autorizzazioni TCC tra le ricompilazioni. Consultare Autorizzazioni di macOS. - Legge
SIGN_IDENTITYdall'ambiente (ad esempioexport SIGN_IDENTITY="Apple Development: Your Name (TEAMID)"o un certificato Developer ID Application). In sua assenza,codesign-mac-app.shseleziona automaticamente un'identità nel seguente ordine: Developer ID Application, Apple Distribution, Apple Development, quindi la prima identità di firma del codice valida trovata. CODESIGN_TIMESTAMP=auto(impostazione predefinita) abilita le marche temporali attendibili solo per le firme Developer ID Application. Impostareon/offper forzare l'una o l'altra opzione.- Inserisce in Info.plist
OpenClawBuildTimestamp(ISO8601 UTC) eOpenClawGitCommit(hash breve,unknownse non disponibile), affinché la scheda Informazioni possa mostrare la build, il commit Git e il canale di debug/rilascio. - Esegue una verifica dell'ID team dopo la firma e non riesce se un qualsiasi file Mach-O all'interno del bundle presenta un ID team diverso. Impostare
SKIP_TEAM_ID_CHECK=1per ignorare la verifica.
Utilizzo
# dalla radice del repositoryscripts/package-mac-app.sh # seleziona automaticamente l'identità; restituisce un errore se non ne viene trovata alcunaSIGN_IDENTITY="Developer ID Application: Your Name" scripts/package-mac-app.sh # certificato realeALLOW_ADHOC_SIGNING=1 scripts/package-mac-app.sh # ad hoc (le autorizzazioni non verranno mantenute)SIGN_IDENTITY="-" scripts/package-mac-app.sh # ad hoc esplicita (stessa avvertenza)DISABLE_LIBRARY_VALIDATION=1 scripts/package-mac-app.sh # soluzione alternativa solo per lo sviluppo in caso di mancata corrispondenza dell'ID team di SparkleNota sulla firma ad hoc
SIGN_IDENTITY="-" disabilita Hardened Runtime (--options runtime) per evitare arresti anomali quando l'app carica framework incorporati (come Sparkle) che non condividono lo stesso ID team. Le firme ad hoc impediscono inoltre la persistenza delle autorizzazioni TCC; consultare Autorizzazioni di macOS per la procedura di ripristino.
Metadati della build per Informazioni
La scheda Informazioni legge OpenClawBuildTimestamp e OpenClawGitCommit da Info.plist per mostrare la versione, la data della build, il commit Git e se la build è DEBUG (tramite #if DEBUG). Eseguire nuovamente il programma di packaging dopo le modifiche al codice per aggiornare questi valori.