mac imzalama (debug derlemeler)
Bu uygulama genelliklescripts/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
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)
#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.