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.19.0 <23یا>=23.11.0(enginesدرpackage.jsonمخزن). بستهبند همچنین رابط کاربری کنترل را میسازد (pnpm ui:build). - بهطور پیشفرض به یک هویت امضای واقعی نیاز دارد؛ اگر هیچ هویتی پیدا نشود و
ALLOW_ADHOC_SIGNINGتنظیم نشده باشد، اسکریپت امضا با خطا خارج میشود. امضای موقت (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(زمان UTC با قالب ISO8601) وOpenClawGitCommit(هش کوتاه؛ در صورت در دسترس نبودنunknown) را ثبت میکند تا زبانهٔ «درباره» بتواند بیلد، git و کانال اشکالزدایی/انتشار را نمایش دهد. - پس از امضا، ممیزی شناسهٔ تیم را اجرا میکند و اگر هر فایل Mach-O درون بسته شناسهٔ تیم متفاوتی داشته باشد، با شکست متوقف میشود. برای دور زدن این بررسی،
SKIP_TEAM_ID_CHECK=1را تنظیم کنید.
روش استفاده
# از ریشهٔ مخزن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 # راهحل موقت ناسازگاری شناسهٔ تیم Sparkle، فقط برای توسعهنکتهٔ امضای موقت
SIGN_IDENTITY="-" زماناجرای سختسازیشده (--options runtime) را غیرفعال میکند تا هنگام بارگذاری فریمورکهای تعبیهشدهای (مانند Sparkle) که شناسهٔ تیم یکسانی ندارند، برنامه از کار نیفتد. امضاهای موقت همچنین ماندگاری مجوزهای TCC را مختل میکنند؛ برای مراحل بازیابی به مجوزهای macOS مراجعه کنید.
فرادادهٔ بیلد برای بخش «درباره»
زبانهٔ «درباره» مقادیر OpenClawBuildTimestamp و OpenClawGitCommit را از Info.plist میخواند تا نسخه، تاریخ بیلد، ثبت git و DEBUG بودن بیلد (از طریق #if DEBUG) را نمایش دهد. پس از تغییرات کد، بستهبند را دوباره اجرا کنید تا این مقادیر بهروزرسانی شوند.