macOS companion app
macOS 簽署
Mac 簽署(偵錯組建)
scripts/package-mac-app.sh 會將應用程式組建並封裝至固定路徑(dist/OpenClaw.app),然後呼叫 scripts/codesign-mac-app.sh 進行簽署。TCC 權限會綁定套件識別碼和程式碼簽章;在每次重新組建時維持兩者穩定(並將應用程式保留在固定路徑),可防止 macOS 遺忘 TCC 授權(通知、輔助使用、螢幕錄製、麥克風、語音)。
- 偵錯套件識別碼預設為
ai.openclaw.mac.debug(可使用BUNDLE_ID=...覆寫)。 - Node:
>=22.22.3 <23、>=24.15.0 <25或>=25.9.0(儲存庫package.jsonengines)。封裝程式也會組建控制介面(pnpm ui:build)。 - 預設需要真實的簽署身分;如果找不到簽署身分,且未設定
ALLOW_ADHOC_SIGNING,程式碼簽署指令碼會以錯誤結束。臨時簽署(SIGN_IDENTITY="-")必須明確選擇啟用,且無法在重新組建後保留 TCC 權限。請參閱 macOS 權限。 - 從環境讀取
SIGN_IDENTITY(例如export SIGN_IDENTITY="Apple Development: Your Name (TEAMID)"或 Developer ID Application 憑證)。若未提供,codesign-mac-app.sh會依下列順序自動選取身分:Developer ID Application、Apple Distribution、Apple Development,最後是找到的第一個有效程式碼簽署身分。 CODESIGN_TIMESTAMP=auto(預設)僅為 Developer ID Application 簽章啟用受信任的時間戳記。設定on/off可強制啟用或停用。- 在 Info.plist 中寫入
OpenClawBuildTimestamp(ISO8601 UTC)和OpenClawGitCommit(短雜湊;若無法取得則為unknown),讓「關於」分頁能顯示組建、Git 和偵錯/發行通道。 - 簽署後執行 Team ID 稽核;如果套件內任何 Mach-O 的 Team ID 不同,則會失敗。設定
SKIP_TEAM_ID_CHECK=1可略過此檢查。
使用方式
# 從儲存庫根目錄執行scripts/package-mac-app.sh # 自動選取身分;若找不到則發生錯誤SIGN_IDENTITY="Developer ID Application: Your Name" scripts/package-mac-app.sh # 真實憑證ALLOW_ADHOC_SIGNING=1 scripts/package-mac-app.sh # 臨時簽署(權限不會保留)SIGN_IDENTITY="-" scripts/package-mac-app.sh # 明確使用臨時簽署(注意事項相同)DISABLE_LIBRARY_VALIDATION=1 scripts/package-mac-app.sh # 僅供開發使用的 Sparkle Team ID 不相符因應措施臨時簽署注意事項
SIGN_IDENTITY="-" 會停用強化執行階段(--options runtime),以防應用程式載入未使用相同 Team ID 的內嵌框架(例如 Sparkle)時當機。臨時簽章也會破壞 TCC 權限的持續保留;復原步驟請參閱 macOS 權限。
「關於」的組建中繼資料
「關於」分頁會從 Info.plist 讀取 OpenClawBuildTimestamp 和 OpenClawGitCommit,以顯示版本、組建日期、Git 提交,以及此組建是否為 DEBUG(透過 #if DEBUG)。程式碼變更後,請重新執行封裝程式以更新這些值。
相關內容
Was this useful?