mac-signering (felsökningsbyggen)¶
Den här appen byggs vanligtvis från scripts/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¶
# from repo root
scripts/package-mac-app.sh # auto-selects identity; errors if none found
SIGN_IDENTITY="Developer ID Application: Your Name" scripts/package-mac-app.sh # real cert
ALLOW_ADHOC_SIGNING=1 scripts/package-mac-app.sh # ad-hoc (permissions will not stick)
SIGN_IDENTITY="-" scripts/package-mac-app.sh # explicit ad-hoc (same caveat)
DISABLE_LIBRARY_VALIDATION=1 scripts/package-mac-app.sh # dev-only Sparkle Team ID mismatch workaround
Notering om ad-hoc-signering¶
När du signerar med SIGN_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)
Fliken Om läser dessa nycklar för att visa versionen, byggdatum, git commit, och om det är en debug build (via #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.