التطبيق المصاحب لنظام macOS
توقيع تطبيقات macOS
يتم بناء هذا التطبيق عادةً من scripts/package-mac-app.sh، والذي يقوم الآن بما يلي:
- تعيين معرف حزمة تصحيح أخطاء ثابت:
ai.openclaw.mac.debug - كتابة ملف Info.plist باستخدام معرف الحزمة ذلك (يمكن التجاوز عبر
BUNDLE_ID=...) - استدعاء
scripts/codesign-mac-app.shلتوقيع الملف الثنائي الرئيسي وحزمة التطبيق بحيث يعامل نظام macOS كل إعادة بناء كحزمة موقعة نفسها ويحافظ على أذونات TCC (الإشعارات، إمكانية الوصول، تسجيل الشاشة، الميكروفون، الكلام). للحصول على أذونات مستقرة، استخدم هوية توقيع حقيقية؛ التوقيع المخصص (ad-hoc) اختياري وهش (انظر أذونات macOS). - استخدام
CODESIGN_TIMESTAMP=autoافت راضيًا؛ فهو يمكّن الطوابع الزمنية الموثوقة لتوقيعات معرف المطور (Developer ID). اضبطCODESIGN_TIMESTAMP=offلتخطي وضع الطابع الزمني (بناءات تصحيح أخطاء دون اتصال). - حقن بيانات وصفية للبناء في Info.plist:
OpenClawBuildTimestamp(بتوقيت UTC) وOpenClawGitCommit(تجزئة Git مختصرة) حتى تتمكن نافذة "حول" من عرض معلومات البناء، و Git، وقناة التصحيح/الإصدار. - يتطلب التعبئة Node 22+: ينفذ السكريبت بناءات TS وبناء واجهة التحكم (Control UI).
- قراءة
SIGN_IDENTITYمن البيئة. أضفexport SIGN_IDENTITY="Apple Development: Your Name (TEAMID)"(أو شهادة معرف المطور للتطبيق الخاصة بك) إلى ملف shell rc الخاص بك لتوقيع التطبيق دائمًا بشهادتك. يتطلب التوقيع المخصص (ad-hoc) موافقة صريحة عبرALLOW_ADHOC_SIGNING=1أوSIGN_IDENTITY="-"(غير موصى به لاختبار الأذونات). - إجراء تدقيق لمعرف الفريق (Team ID) بعد التوقيع والفشل إذا كان أي ملف 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 (للتطوير فقط)
ملاحظة حول التوقيع المخصص (Ad-hoc)
عند التوقيع باستخدام SIGN_IDENTITY="-" (مخصص)، يقوم السكريبت تلقائيًا بتعطيل