firma mac (build di debug)
Questa app viene di solito compilata dascripts/package-mac-app.sh, che ora:
- imposta un identificatore bundle di debug stabile:
ai.openclaw.mac.debug - scrive l’Info.plist con quell’id bundle (override tramite
BUNDLE_ID=...) - chiama
scripts/codesign-mac-app.shper firmare il binario principale e il bundle dell’app così macOS tratta ogni rebuild come lo stesso bundle firmato e mantiene i permessi TCC (notifiche, accessibilità, registrazione dello schermo, microfono, voce). Per permessi stabili, usa una vera identità di firma; la firma ad-hoc è opzionale e fragile (vedi permessi macOS). - usa
CODESIGN_TIMESTAMP=autoper impostazione predefinita; abilita timestamp attendibili per le firme Developer ID. ImpostaCODESIGN_TIMESTAMP=offper saltare il timestamping (build di debug offline). - inietta metadati di build in Info.plist:
OpenClawBuildTimestamp(UTC) eOpenClawGitCommit(hash breve) così il pannello About può mostrare build, git e canale debug/release. - Il packaging usa per impostazione predefinita Node 24: lo script esegue le build TS e la build della Control UI. Node 22 LTS, attualmente
22.14+, resta supportato per compatibilità. - legge
SIGN_IDENTITYdall’ambiente. Aggiungiexport SIGN_IDENTITY="Apple Development: Your Name (TEAMID)"(o il tuo certificato Developer ID Application) al file rc della shell per firmare sempre con il tuo certificato. La firma ad-hoc richiede adesione esplicita tramiteALLOW_ADHOC_SIGNING=1oSIGN_IDENTITY="-"(non consigliato per testare i permessi). - esegue un audit Team ID dopo la firma e fallisce se un qualsiasi Mach-O nel bundle dell’app è firmato con un Team ID diverso. Imposta
SKIP_TEAM_ID_CHECK=1per bypassare il controllo.
Utilizzo
Nota sulla firma ad-hoc
Quando firmi conSIGN_IDENTITY="-" (ad-hoc), lo script disabilita automaticamente il Hardened Runtime (--options runtime). Questo è necessario per evitare crash quando l’app tenta di caricare framework incorporati (come Sparkle) che non condividono lo stesso Team ID. Le firme ad-hoc interrompono anche la persistenza dei permessi TCC; vedi permessi macOS per i passaggi di recupero.
Metadati di build per About
package-mac-app.sh applica al bundle:
OpenClawBuildTimestamp: UTC ISO8601 al momento del packagingOpenClawGitCommit: hash git breve (ounknownse non disponibile)
#if DEBUG). Esegui il packager per aggiornare questi valori dopo modifiche al codice.
Perché
I permessi TCC sono legati all’identificatore del bundle e alla firma del codice. Le build di debug non firmate con UUID variabili facevano dimenticare a macOS le autorizzazioni dopo ogni rebuild. Firmare i binari (ad‑hoc per impostazione predefinita) e mantenere un id/percorso bundle fisso (dist/OpenClaw.app) preserva le autorizzazioni tra una build e l’altra, seguendo l’approccio di VibeTunnel.