macOS companion app

امضای macOS

امضای mac (ساخت‌های اشکال‌زدایی)

scripts/package-mac-app.sh برنامه را در یک مسیر ثابت (dist/OpenClaw.app) می‌سازد و بسته‌بندی می‌کند، سپس برای امضای آن scripts/codesign-mac-app.sh را فراخوانی می‌کند. مجوزهای TCC به شناسهٔ بسته و امضای کد وابسته‌اند؛ ثابت نگه‌داشتن هر دو (و برنامه در یک مسیر ثابت) میان ساخت‌های مجدد، مانع از آن می‌شود که macOS مجوزهای TCC (اعلان‌ها، دسترس‌پذیری، ضبط صفحه، میکروفون، گفتار) را فراموش کند.

  • شناسهٔ بستهٔ اشکال‌زدایی به‌طور پیش‌فرض ai.openclaw.mac.debug است (با BUNDLE_ID=... بازنویسی کنید).
  • Node: >=22.22.3 <23، >=24.15.0 <25 یا >=25.9.0 (package.json مخزن engines). بسته‌بند همچنین رابط کاربری کنترل (pnpm ui:build) را می‌سازد.
  • به‌طور پیش‌فرض به یک هویت امضای واقعی نیاز دارد؛ اگر هیچ هویتی یافت نشود و ALLOW_ADHOC_SIGNING تنظیم نشده باشد، اسکریپت codesign با خطا خارج می‌شود. امضای موقت (SIGN_IDENTITY="-") مستلزم فعال‌سازی صریح است و مجوزهای TCC را میان ساخت‌های مجدد حفظ نمی‌کند. مجوزهای macOS را ببینید.
  • SIGN_IDENTITY را از محیط می‌خواند (برای مثال export SIGN_IDENTITY="Apple Development: Your Name (TEAMID)" یا یک گواهی Developer ID Application). بدون آن، codesign-mac-app.sh به‌طور خودکار و با این ترتیب یک هویت انتخاب می‌کند: Developer ID Application، Apple Distribution، Apple Development و سپس نخستین هویت معتبر امضای کد که پیدا شود.
  • CODESIGN_TIMESTAMP=auto (پیش‌فرض) مُهر زمانی قابل‌اعتماد را فقط برای امضاهای Developer ID Application فعال می‌کند. برای اجبار در هر جهت، on/off را تنظیم کنید.
  • فایل Info.plist را با OpenClawBuildTimestamp (ISO8601 UTC) و OpenClawGitCommit (هش کوتاه، یا unknown در صورت در دسترس نبودن) مُهر می‌زند تا زبانهٔ درباره بتواند ساخت، git و کانال اشکال‌زدایی/انتشار را نمایش دهد.
  • پس از امضا، ممیزی Team ID را اجرا می‌کند و اگر هر Mach-O درون بسته Team ID متفاوتی داشته باشد، ناموفق می‌شود. برای دور زدن آن، SKIP_TEAM_ID_CHECK=1 را تنظیم کنید.

استفاده

bash
# از ریشهٔ مخزنscripts/package-mac-app.sh                                                      # هویت را خودکار انتخاب می‌کند؛ اگر هیچ هویتی یافت نشود خطا می‌دهدSIGN_IDENTITY="Developer ID Application: Your Name" scripts/package-mac-app.sh   # گواهی واقعیALLOW_ADHOC_SIGNING=1 scripts/package-mac-app.sh                                 # موقت (مجوزها پایدار نمی‌مانند)SIGN_IDENTITY="-" scripts/package-mac-app.sh                                     # امضای موقت صریح (با همان ملاحظه)DISABLE_LIBRARY_VALIDATION=1 scripts/package-mac-app.sh                          # راه‌حل موقت ناسازگاری Team ID در Sparkle، فقط برای توسعه

نکتهٔ امضای موقت

SIGN_IDENTITY="-"، Hardened Runtime (--options runtime) را غیرفعال می‌کند تا هنگام بارگذاری چارچوب‌های تعبیه‌شده‌ای (مانند Sparkle) که Team ID یکسانی ندارند، برنامه از کار نیفتد. امضاهای موقت همچنین ماندگاری مجوزهای TCC را مختل می‌کنند؛ برای مراحل بازیابی، مجوزهای macOS را ببینید.

فرادادهٔ ساخت برای «درباره»

زبانهٔ درباره، OpenClawBuildTimestamp و OpenClawGitCommit را از Info.plist می‌خواند تا نسخه، تاریخ ساخت، ثبت git و DEBUG بودن ساخت (از طریق #if DEBUG) را نمایش دهد. برای به‌روزرسانی این مقادیر پس از تغییر کد، بسته‌بند را دوباره اجرا کنید.

مرتبط

Was this useful?
On this page

On this page