mac imzalama (debug derlemeler)¶
Bu uygulama genellikle scripts/package-mac-app.sh üzerinden oluşturulur; bu betik artık:
- kararlı bir debug paket tanımlayıcısı ayarlar:
ai.openclaw.mac.debug - Info.plist’i bu paket kimliğiyle yazar (
BUNDLE_ID=...ile geçersiz kılınabilir) - ana ikiliyi ve uygulama paketini imzalamak için
scripts/codesign-mac-app.shçağırır; böylece macOS her yeniden derlemeyi aynı imzalı paket olarak ele alır ve TCC izinlerini (bildirimler, erişilebilirlik, ekran kaydı, mikrofon, konuşma) korur. Kararlı izinler için gerçek bir imzalama kimliği kullanın; ad-hoc isteğe bağlıdır ve kırılgandır (bkz. macOS permissions). - varsayılan olarak
CODESIGN_TIMESTAMP=autokullanır; bu, Developer ID imzaları için güvenilir zaman damgalarını etkinleştirir. Zaman damgalamayı atlamak (çevrimdışı debug derlemeleri) içinCODESIGN_TIMESTAMP=offayarlayın. - Info.plist’e derleme meta verilerini enjekte eder:
OpenClawBuildTimestamp(UTC) veOpenClawGitCommit(kısa hash); böylece Hakkında bölmesi derleme, git ve debug/release kanalını gösterebilir. - Paketleme Node 22+ gerektirir: betik TS derlemelerini ve Control UI derlemesini çalıştırır.
- ortamdan
SIGN_IDENTITYokur. Sertifikanızla her zaman imzalamak için kabuk rc’nizeexport SIGN_IDENTITY="Apple Development: Your Name (TEAMID)"(veya Developer ID Application sertifikanız) ekleyin. Ad-hoc imzalama,ALLOW_ADHOC_SIGNING=1veyaSIGN_IDENTITY="-"üzerinden açıkça etkinleştirilmelidir (izin testleri için önerilmez). - imzalamadan sonra bir Team ID denetimi çalıştırır ve uygulama paketi içindeki herhangi bir Mach-O farklı bir Team ID ile imzalanmışsa başarısız olur. Atlamak için
SKIP_TEAM_ID_CHECK=1ayarlayın.
Kullanım¶
# 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
Ad-hoc İmzalama Notu¶
SIGN_IDENTITY="-" (ad-hoc) ile imzalanırken, betik Hardened Runtime’ı (--options runtime) otomatik olarak devre dışı bırakır. Bu, uygulama aynı Team ID’yi paylaşmayan gömülü framework’leri (ör. Sparkle) yüklemeye çalıştığında oluşabilecek çökmeleri önlemek için gereklidir. Ad-hoc imzalar ayrıca TCC izinlerinin kalıcılığını bozar; kurtarma adımları için macOS permissions sayfasına bakın.
Hakkında için derleme meta verileri¶
package-mac-app.sh paketi şu bilgilerle damgalar:
OpenClawBuildTimestamp: paketleme anında ISO8601 UTCOpenClawGitCommit: kısa git hash’i (mevcut değilseunknown)
Hakkında sekmesi, sürüm, derleme tarihi, git commit’i ve bunun bir debug derlemesi olup olmadığı bilgisini (#if DEBUG aracılığıyla) göstermek için bu anahtarları okur. Kod değişikliklerinden sonra bu değerleri yenilemek için paketleyiciyi çalıştırın.
Neden¶
TCC izinleri paket tanımlayıcısına ve kod imzasına bağlıdır. UUID’leri değişen imzasız debug derlemeleri, macOS’in her yeniden derlemeden sonra verilen izinleri unutmasına neden oluyordu. İkili dosyaları imzalamak (varsayılan olarak ad‑hoc) ve sabit bir paket kimliği/yolu (dist/OpenClaw.app) korumak, derlemeler arasında izinleri muhafaza eder; VibeTunnel yaklaşımıyla uyumludur.