mac-signering (felsökningsbyggen)
Den här appen byggs vanligtvis frånscripts/package-mac-app.sh, som nu:
- sätter ett stabilt bundle-ID för debug:
ai.openclaw.mac.debug - skriver Info.plist med detta bundle-ID (åsidosätt via
BUNDLE_ID=...) - anrop
scripts/codesign-mac-app. hför att signera huvudbinär och app bunt så macOS behandlar varje ombyggnad som samma signerade bunt och behåller TCC-behörigheter (notifikationer, tillgänglighet, skärminspelning, mikrofon, tal). För stabila behörigheter, använd en riktig signeringsidentitet, ad-hoc är opt-in och bräcklig (se macOS behörigheter). - använder
CODESIGN_TIMESTAMP=autosom standard; det möjliggör betrodda tidsstämplar för utvecklarID-signaturer. SättCODESIGN_TIMESTAMP=offtill att hoppa över tidsstämpling (offline debug builds). - injicerar byggmetadata i Info.plist:
OpenClawBuildTimestamp(UTC) ochOpenClawGitCommit(kort hash) så att Om-panelen kan visa build, git samt debug-/release-kanal. - Paketering kräver Node 22+: skriptet kör TS-byggen och bygger Control UI.
- läser
SIGN_IDENTITYfrån omgivningen. Lägg tillexport SIGN_IDENTITY="Apple Development: Your Name (TEAMID)"(eller ditt utvecklarID Application cert) till din shell rc för att alltid signera med ditt cert. Ad-hoc signering kräver explicit opt-in viaALLOW_ADHOC_SIGNING=1ellerSIGN_IDENTITY="-"(rekommenderas inte för behörighetstestning). - kör en Team ID revision efter signering och misslyckas om någon Mach-O inuti appen bunt är signerad av ett annat Team ID. Sätt
SKIP_TEAM_ID_CHECK=1till bypass.
Användning
Notering om ad-hoc-signering
När du signerar medSIGN_IDENTITY="-" (ad-hoc) inaktiverar skriptet automatiskt härdad körtid (--options runtime). Detta är nödvändigt för att förhindra kraschar när appen försöker ladda inbäddade ramar (som Sparkle) som inte delar samma Team ID. Ad-hoc signaturer bryter också TCC behörighetsbeständighet; se macOS behörigheter för återställningssteg.
Byggmetadata för Om
package-mac-app.sh stämplar bundlen med:
OpenClawBuildTimestamp: ISO8601 UTC vid paketeringOpenClawGitCommit: kort git-hash (ellerunknownom den inte är tillgänglig)
#if DEBUG). Kör paketet för att uppdatera dessa värden efter kodändringar.
Varför
TCC-behörigheter är knutna till paketidentifieraren och kodsignatur. Osignerade debug kompileringar med ändrade UUID:er fick macOS att glömma bidrag efter varje rebuild. Undertecknandet av binärerna (ad‐hoc som standard) och behållandet av en fast bunt-id/sökväg (dist/OpenClaw.app) bevarar bidragen mellan byggen och matchar VibeTunnel tillvägagångssättet.