mac imzalama (hata ayıklama derlemeleri)
Bu uygulama genelliklescripts/package-mac-app.sh üzerinden derlenir; bu betik artık şunları yapar:
- kararlı bir hata ayıklama bundle tanımlayıcısı ayarlar:
ai.openclaw.mac.debug - Info.plist dosyasını bu bundle kimliğiyle yazar (
BUNDLE_ID=...ile geçersiz kılınabilir) - ana ikili dosyayı ve uygulama bundle’ını imzalamak için
scripts/codesign-mac-app.shçağırır; böylece macOS her yeniden derlemeyi aynı imzalı bundle olarak görür ve TCC izinlerini korur (bildirimler, erişilebilirlik, ekran kaydı, mikrofon, konuşma). 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 (macOS permissions bölümüne bakın). - varsayılan olarak
CODESIGN_TIMESTAMP=autokullanır; bu, Developer ID imzaları için güvenilir zaman damgalarını etkinleştirir. Zaman damgalamayı atlamak içinCODESIGN_TIMESTAMP=offayarlayın (çevrimdışı hata ayıklama derlemeleri). - Info.plist içine derleme meta verileri ekler: Hakkında bölmesinin derlemeyi, git bilgisini ve hata ayıklama/sürüm kanalını gösterebilmesi için
OpenClawBuildTimestamp(UTC) veOpenClawGitCommit(kısa hash). - Paketleme varsayılan olarak Node 24 kullanır: betik TS derlemelerini ve Control UI derlemesini çalıştırır. Node 22 LTS, şu anda
22.14+, uyumluluk için desteklenmeye devam eder. - ortam değişkenlerinden
SIGN_IDENTITYdeğerini okur. Her zaman sertifikanızla imzalamak için bunu kabuk rc dosyanıza ekleyin:export SIGN_IDENTITY="Apple Development: Your Name (TEAMID)"(veya Developer ID Application sertifikanız). Ad-hoc imzalama içinALLOW_ADHOC_SIGNING=1ya daSIGN_IDENTITY="-"ile açıkça izin verilmelidir (izin testi için önerilmez). - imzalamadan sonra bir Team ID denetimi çalıştırır ve uygulama bundle’ı içindeki herhangi bir Mach-O farklı bir Team ID ile imzalanmışsa başarısız olur. Bunu atlamak için
SKIP_TEAM_ID_CHECK=1ayarlayın.
Kullanım
Ad-hoc İmzalama Notu
SIGN_IDENTITY="-" ile imzalama yapıldığında (ad-hoc), betik Hardened Runtime özelliğini (--options runtime) otomatik olarak devre dışı bırakır. Bu, uygulama aynı Team ID’yi paylaşmayan gömülü framework’leri (Sparkle gibi) yüklemeye çalıştığında çökmeleri önlemek için gereklidir. Ad-hoc imzalar ayrıca TCC izinlerinin kalıcılığını da bozar; kurtarma adımları için macOS permissions bölümüne bakın.
Hakkında için derleme meta verileri
package-mac-app.sh, bundle’a şu bilgileri damgalar:
OpenClawBuildTimestamp: paketleme anındaki ISO8601 UTCOpenClawGitCommit: kısa git hash’i (veya mevcut değilseunknown)
#if DEBUG aracılığıyla) gösterir. Kod değişikliklerinden sonra bu değerleri yenilemek için paketleyiciyi çalıştırın.
Neden
TCC izinleri bundle tanımlayıcısına ve kod imzasına bağlıdır. UUID’leri değişen imzasız hata ayıklama derlemeleri, macOS’un her yeniden derlemeden sonra verilen izinleri unutmasına neden oluyordu. İkili dosyaları imzalamak (varsayılan olarak ad-hoc) ve sabit bir bundle kimliği/yolu (dist/OpenClaw.app) korumak, VibeTunnel yaklaşımına benzer şekilde izinlerin derlemeler arasında korunmasını sağlar.