Asosiy tarkibga o'tish

macOS imzolash (debug build’lar)

Ushbu ilova odatda scripts/package-mac-app.sh orqali yaratiladi, hozirda u:
  • sets a stable debug bundle identifier: ai.openclaw.mac.debug
  • writes the Info.plist with that bundle id (override via BUNDLE_ID=...)
  • calls scripts/codesign-mac-app.sh to sign the main binary and app bundle so macOS treats each rebuild as the same signed bundle and keeps TCC permissions (notifications, accessibility, screen recording, mic, speech). Barqaror ruxsatlar uchun haqiqiy imzolash identifikatoridan foydalaning; ad-hoc opt-in orqali yoqiladi va beqaror (qarang macOS permissions).
  • odatiy holatda CODESIGN_TIMESTAMP=auto dan foydalanadi; u Developer ID imzolari uchun ishonchli vaqt tamgʻalarini yoqadi. Vaqt tamgʻasini oʻtkazib yuborish uchun CODESIGN_TIMESTAMP=off ni o‘rnating (oflayn debug buildlar).
  • build metamaʼlumotlarini Info.plist ga kiritadi: OpenClawBuildTimestamp (UTC) va OpenClawGitCommit (qisqa xesh), shunda About oynasi build, git va debug/release kanalini ko‘rsata oladi.
  • Paketlash Node 22+ ni talab qiladi: skript TS buildlarini va Control UI buildini ishga tushiradi.
  • muhitdan SIGN_IDENTITY ni o‘qiydi. Har doim sertifikatingiz bilan imzolash uchun shell rc faylingizga export SIGN_IDENTITY="Apple Development: Your Name (TEAMID)" (yoki Developer ID Application sertifikatingiz) ni qo‘shing. Ad-hoc imzolash ALLOW_ADHOC_SIGNING=1 yoki SIGN_IDENTITY="-" orqali aniq opt-in talab qiladi (ruxsatlarni sinash uchun tavsiya etilmaydi).
  • imzolashdan so‘ng Team ID auditini bajaradi va agar ilova to‘plami ichidagi biror Mach-O boshqa Team ID bilan imzolangan bo‘lsa, xatolik bilan to‘xtaydi. Chetlab o‘tish uchun SKIP_TEAM_ID_CHECK=1 ni o‘rnating.

Foydalanish

# repo ildizidan

scripts/package-mac-app.sh # identifikatorni avtomatik tanlaydi; topilmasa xato beradi SIGN_IDENTITY=“Developer ID Application: Your Name” scripts/package-mac-app.sh # haqiqiy sertifikat ALLOW_ADHOC_SIGNING=1 scripts/package-mac-app.sh # ad-hoc (ruxsatlar saqlanib qolmaydi) SIGN_IDENTITY=”-” scripts/package-mac-app.sh # aniq ad-hoc (xuddi shu ogohlantirish) DISABLE_LIBRARY_VALIDATION=1 scripts/package-mac-app.sh # faqat dev uchun Sparkle Team ID mos kelmasligi bo‘yicha vaqtinchalik yechim

Ad-hoc imzolash eslatmasi SIGN_IDENTITY="-" (ad-hoc) bilan imzolaganda, skript avtomatik ravishda Hardened Runtime (--options runtime) ni o‘chiradi. Bu ilova bir xil Team ID ga ega bo‘lmagan o‘rnatilgan frameworklarni (masalan, Sparkle) yuklashga uringanda qulashlarning oldini olish uchun zarur.

Ad-hoc imzolar TCC ruxsatlarining saqlanib qolishini ham buzadi; tiklash bosqichlari uchun macOS permissions ga qarang.

About uchun build metamaʼlumotlari
  • package-mac-app.sh to‘plamni quyidagilar bilan tamg‘alaydi:
  • OpenClawBuildTimestamp: paketlash paytidagi ISO8601 UTC
OpenClawGitCommit: qisqa git xeshi (mavjud bo‘lmasa unknown) About yorlig‘i ushbu kalitlarni versiya, build sanasi, git commit va debug build ekanligini (#if DEBUG orqali) ko‘rsatish uchun o‘qiydi.

Kod o‘zgarishlaridan so‘ng ushbu qiymatlarni yangilash uchun packagerni ishga tushiring.

TCC permissions are tied to the bundle identifier and code signature. TCC ruxsatlari bundle identifikatori va kod imzosiga bog‘langan. UUID lari o‘zgarib turadigan imzolanmagan debug buildlar macOS ning har bir qayta builddan keyin ruxsatlarni unutishiga sabab bo‘layotgan edi.