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 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 ikiliyi 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 değerlendirir 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 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). - Info.plist içine derleme meta verileri ekler: About bölmesinin derlemeyi, git bilgisini ve debug/release 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. Şu anda
22.19+olan Node 22 LTS, uyumluluk için desteklenmeye devam eder. - ortamdan
SIGN_IDENTITYokur. Her zaman sertifikanızla imzalamak için shell 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 testleri 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 tarafından imzalanmışsa başarısız olur. Atlamak için
SKIP_TEAM_ID_CHECK=1ayarlayın.
Kullanım
# from repo rootscripts/package-mac-app.sh # auto-selects identity; errors if none foundSIGN_IDENTITY="Developer ID Application: Your Name" scripts/package-mac-app.sh # real certALLOW_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 workaroundAd-hoc İmzalama Notu
SIGN_IDENTITY="-" (ad-hoc) ile imzalama yaparken 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 (Sparkle gibi) yüklemeye çalıştığında çökmeleri önlemek için gereklidir. Ad-hoc imzalar TCC izin kalıcılığını da bozar; kurtarma adımları için macOS izinleri bölümüne bakın.
About için derleme meta verileri
package-mac-app.sh bundle'ı şunlarla damgalar:
OpenClawBuildTimestamp: paketleme zamanında ISO8601 UTCOpenClawGitCommit: kısa git hash'i (veya kullanılamıyorsaunknown)
About sekmesi bu anahtarları okuyarak sürümü, derleme tarihini, git commit'ini ve bunun bir hata ayıklama derlemesi olup olmadığını (#if DEBUG üzerinden) 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. Değişen UUID'lere sahip imzasız hata ayıklama derlemeleri, macOS'in her yeniden derlemeden sonra izinleri unutmasına neden oluyordu. İkilileri imzalamak (varsayılan olarak ad-hoc) ve sabit bir bundle kimliği/yolu (dist/OpenClaw.app) tutmak, VibeTunnel yaklaşımıyla eşleşerek derlemeler arasında izinleri korur.