Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
การลงนาม mac (บิลด์ดีบัก)
โดยปกติแอปนี้จะถูกบิลด์จาก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, และช่องทางดีบัก/รีลีสได้ - แพ็กเกจจิงใช้ Node 24 เป็นค่าเริ่มต้น: สคริปต์จะรันบิลด์ TS และบิลด์ UI ควบคุม Node 22 LTS ซึ่งปัจจุบันคือ
22.16+ยังคงรองรับเพื่อความเข้ากันได้ - อ่าน
SIGN_IDENTITYจากสภาพแวดล้อม เพิ่มexport SIGN_IDENTITY="Apple Development: Your Name (TEAMID)"(หรือใบรับรอง Developer ID Application ของคุณ) ลงใน rc ของเชลล์เพื่อให้ลงนามด้วยใบรับรองของคุณเสมอ การลงนามแบบ ad-hoc ต้องเลือกใช้อย่างชัดเจนผ่านALLOW_ADHOC_SIGNING=1หรือSIGN_IDENTITY="-"(ไม่แนะนำสำหรับการทดสอบสิทธิ์) - รันการตรวจสอบ Team ID หลังการลงนาม และล้มเหลวถ้า Mach-O ใด ๆ ภายในบันเดิลแอปถูกลงนามโดย Team ID อื่น ตั้งค่า
SKIP_TEAM_ID_CHECK=1เพื่อข้าม
การใช้งาน
หมายเหตุการลงนามแบบ ad-hoc
เมื่อลงนามด้วยSIGN_IDENTITY="-" (ad-hoc) สคริปต์จะปิดใช้ Hardened Runtime (--options runtime) โดยอัตโนมัติ สิ่งนี้จำเป็นเพื่อป้องกันการแครชเมื่อแอปพยายามโหลดเฟรมเวิร์กที่ฝังมา (เช่น Sparkle) ซึ่งไม่ได้ใช้ Team ID เดียวกัน ลายเซ็นแบบ ad-hoc ยังทำให้การคงสิทธิ์ TCC เสียหายด้วย; ดูขั้นตอนการกู้คืนที่ สิทธิ์ของ macOS
ข้อมูลเมตาของบิลด์สำหรับเกี่ยวกับ
package-mac-app.sh ประทับบันเดิลด้วย:
OpenClawBuildTimestamp: ISO8601 UTC ณ เวลาจัดแพ็กเกจOpenClawGitCommit: แฮช git สั้น (หรือunknownหากไม่พร้อมใช้งาน)
#if DEBUG) รันเครื่องมือจัดแพ็กเกจเพื่อรีเฟรชค่าเหล่านี้หลังจากเปลี่ยนแปลงโค้ด
เหตุผล
สิทธิ์ TCC ผูกกับตัวระบุบันเดิล และ ลายเซ็นโค้ด บิลด์ดีบักที่ไม่ได้ลงนามและมี UUID เปลี่ยนไปทำให้ macOS ลืมการอนุญาตหลังการบิลด์ใหม่แต่ละครั้ง การลงนามไบนารี (เป็นแบบ ad-hoc โดยค่าเริ่มต้น) และการคงรหัส/พาธบันเดิลให้ตายตัว (dist/OpenClaw.app) จะรักษาการอนุญาตระหว่างบิลด์ไว้ ซึ่งสอดคล้องกับแนวทางของ VibeTunnel