Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
mac 簽署(偵錯建置)
此應用程式通常透過scripts/package-mac-app.sh 建置,現在會:
- 設定穩定的偵錯 bundle 識別碼:
ai.openclaw.mac.debug - 使用該 bundle id 寫入 Info.plist(可透過
BUNDLE_ID=...覆寫) - 呼叫
scripts/codesign-mac-app.sh簽署主二進位檔與 app bundle,讓 macOS 將每次重建視為同一個已簽署的 bundle,並保留 TCC 權限(通知、輔助使用、螢幕錄製、麥克風、語音)。若要穩定保留權限,請使用真正的簽署身分;ad-hoc 需要明確選用且不穩定(請參閱 macOS 權限)。 - 預設使用
CODESIGN_TIMESTAMP=auto;它會為 Developer ID 簽章啟用受信任時間戳。設定CODESIGN_TIMESTAMP=off可略過時間戳(離線偵錯建置)。 - 將建置中繼資料注入 Info.plist:
OpenClawBuildTimestamp(UTC)與OpenClawGitCommit(短雜湊),讓「關於」窗格能顯示建置、git,以及偵錯/發行通道。 - 封裝預設使用 Node 24:此腳本會執行 TS 建置與 Control UI 建置。Node 22 LTS(目前為
22.14+)仍支援相容性。 - 從環境讀取
SIGN_IDENTITY。將export SIGN_IDENTITY="Apple Development: Your Name (TEAMID)"(或你的 Developer ID Application 憑證)新增至 shell rc,即可一律使用你的憑證簽署。Ad-hoc 簽署需要透過ALLOW_ADHOC_SIGNING=1或SIGN_IDENTITY="-"明確選用(不建議用於權限測試)。 - 簽署後執行 Team ID 稽核,若 app bundle 內任何 Mach-O 由不同的 Team ID 簽署,則會失敗。設定
SKIP_TEAM_ID_CHECK=1可略過。
使用方式
Ad-hoc 簽署注意事項
使用SIGN_IDENTITY="-"(ad-hoc)簽署時,腳本會自動停用 Hardened Runtime(--options runtime)。這是必要的,避免 app 嘗試載入未共用相同 Team ID 的嵌入式 framework(例如 Sparkle)時發生當機。Ad-hoc 簽章也會破壞 TCC 權限持續性;復原步驟請參閱 macOS 權限。
「關於」的建置中繼資料
package-mac-app.sh 會在 bundle 上標記:
OpenClawBuildTimestamp:封裝時間的 ISO8601 UTCOpenClawGitCommit:短 git 雜湊(若無法取得則為unknown)
#if DEBUG)。程式碼變更後,請執行封裝器以重新整理這些值。
原因
TCC 權限會綁定 bundle 識別碼_以及_程式碼簽章。UUID 變動的未簽署偵錯建置會導致 macOS 在每次重建後忘記授權。簽署二進位檔(預設為 ad-hoc)並維持固定 bundle id/路徑(dist/OpenClaw.app),即可在建置之間保留授權,與 VibeTunnel 方法一致。