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(بتنسيق ISO8601 وبتوقيت UTC) و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). أعد تشغيل المُحزِّم بعد تغييرات الشيفرة لتحديث هذه القيم.