macOS companion app
macOS imzalama
mac imzalama (hata ayıklama derlemeleri)
Bu uygulama genellikle scripts/package-mac-app.sh üzerinden derlenir; bu betik artık:
- kararlı bir hata ayıklama paket tanımlayıcısı ayarlar:
ai.openclaw.mac.debug - Info.plist dosyasını bu paket kimliğiyle yazar (
BUNDLE_ID=...ile geçersiz kılın) - macOS’in her yeniden derlemeyi aynı imzalı paket olarak ele alması ve TCC izinlerini (bildirimler, erişilebilirlik, ekran kaydı, mikrofon, konuşma) koruması için ana ikiliyi ve uygulama paketini imzalamak üzere
scripts/codesign-mac-app.shdosyasını çağırır. 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 izinleri). - varsayılan olarak
CODESIGN_TIMESTAMP=autokullanır; 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). - derleme üst verilerini Info.plist içine enjekte eder:
OpenClawBuildTimestamp(UTC) veOpenClawGitCommit(kısa hash); böylece Hakkında bölmesi derlemeyi, git’i ve hata ayıklama/sürüm kanalını gösterebilir. - Paketleme varsayılan olarak Node 24 kullanır: betik TS derlemelerini ve Control UI derlemesini çalıştırır. Şu anda
22.16+olan Node 22 LTS, uyumluluk için desteklenmeye devam eder. - ortamdan
SIGN_IDENTITYdeğerini okur. Her zaman sertifikanızla imzalamak için kabuk rc dosyanızaexport 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ştirme gerektirir (izin testi için önerilmez). - imzalamadan sonra bir Team ID denetimi çalıştırır ve uygulama paketinin 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 imzalama yapıldığında, betik Hardened Runtime (--options runtime) özelliğini 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 izin kalıcılığını bozar; kurtarma adımları için macOS izinleri sayfasına bakın.
Hakkında için derleme üst verileri
package-mac-app.sh paketi şunlarla damgalar:
OpenClawBuildTimestamp: paketleme anında ISO8601 UTCOpenClawGitCommit: kısa git hash’i (veya kullanılamıyorsaunknown)
Hakkında sekmesi bu anahtarları okuyarak sürümü, derleme tarihini, git commit’ini ve bunun bir hata ayıklama derlemesi olup olmadığını (#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 paket tanımlayıcısına ve kod imzasına bağlıdır. Değişen UUID’lere sahip imzasız hata ayıklama derlemeleri, macOS’in her yeniden derlemeden sonra verilen izinleri unutmasına neden oluyordu. İkilileri (varsayılan olarak ad-hoc) imzalamak ve sabit bir paket kimliği/yolu (dist/OpenClaw.app) korumak, VibeTunnel yaklaşımıyla uyumlu şekilde derlemeler arasında izinleri korur.