macOS companion app
Підписування macOS
Підписування для macOS (налагоджувальні збірки)
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 і канал налагоджувальної або релізної версії. - Після підписування запускає перевірку 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 і те, чи є збірка налагоджувальною (за допомогою #if DEBUG). Після змін у коді повторно запустіть пакувальник, щоб оновити ці значення.