Підписування 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(короткий хеш), щоб панель About могла показувати збірку, git і канал debug/release. - Пакування за замовчуванням використовує Node 24: скрипт запускає TS-збірки та збірку Control UI. Node 22 LTS, наразі
22.14+, як і раніше підтримується для сумісності. - читає
SIGN_IDENTITYзі змінної середовища. Додайтеexport SIGN_IDENTITY="Apple Development: Your Name (TEAMID)"(або свій сертифікат Developer ID Application) до конфігурації оболонки, щоб завжди підписувати своїм сертифікатом. 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.
Метадані збірки для About
package-mac-app.sh позначає пакет такими даними:
OpenClawBuildTimestamp: ISO8601 UTC на момент пакуванняOpenClawGitCommit: короткий git-хеш (абоunknown, якщо недоступний)
#if DEBUG). Запускайте пакувальник, щоб оновити ці значення після змін у коді.
Чому
Дозволи TCC прив’язані до ідентифікатора пакета та підпису коду. Непідписані налагоджувальні збірки зі змінними UUID призводили до того, що macOS забувала видані дозволи після кожної перебудови. Підписування бінарних файлів (ad‑hoc за замовчуванням) і збереження фіксованого ідентифікатора/шляху пакета (dist/OpenClaw.app) зберігає дозволи між збірками, повторюючи підхід VibeTunnel.