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ของที่เก็บโค้ด) ตัวแพ็กเกจยังสร้าง UI ควบคุมด้วย (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เพื่อบังคับให้เปิดหรือปิด- ประทับค่า
OpenClawBuildTimestamp(ISO8601 UTC) และOpenClawGitCommit(แฮชแบบย่อ หรือunknownหากไม่มีข้อมูล) ลงใน Info.plist เพื่อให้แท็บเกี่ยวกับสามารถแสดงบิลด์, git และช่องทางดีบัก/รุ่นเผยแพร่ได้ - เรียกใช้การตรวจสอบ Team ID หลังการลงนาม และจะล้มเหลวหาก Mach-O ใดภายในบันเดิลมี Team ID แตกต่างกัน ตั้งค่า
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 # วิธีแก้ชั่วคราวสำหรับ Team ID ของ Sparkle ที่ไม่ตรงกัน เฉพาะการพัฒนาหมายเหตุเกี่ยวกับการลงนามเฉพาะกิจ
SIGN_IDENTITY="-" ปิดใช้ Hardened Runtime (--options runtime) เพื่อป้องกันการหยุดทำงานเมื่อแอปโหลดเฟรมเวิร์กที่ฝังอยู่ (เช่น Sparkle) ซึ่งไม่ได้ใช้ Team ID เดียวกัน ลายเซ็นเฉพาะกิจยังทำให้ไม่สามารถคงสิทธิ์ TCC ไว้ได้ด้วย ดูขั้นตอนการกู้คืนที่ สิทธิ์ของ macOS
ข้อมูลเมตาของบิลด์สำหรับส่วนเกี่ยวกับ
แท็บเกี่ยวกับอ่านค่า OpenClawBuildTimestamp และ OpenClawGitCommit จาก Info.plist เพื่อแสดงเวอร์ชัน วันที่สร้าง คอมมิต git และระบุว่าบิลด์เป็น DEBUG หรือไม่ (ผ่าน #if DEBUG) เรียกใช้ตัวแพ็กเกจอีกครั้งหลังจากเปลี่ยนแปลงโค้ดเพื่ออัปเดตค่าเหล่านี้