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.22.3 <23, >=24.15.0 <25 або >=25.9.0 (репозиторій package.json engines). Пакувальник також збирає інтерфейс керування (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, щоб пропустити перевірку.

Використання

bash
# із кореня репозиторію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). Після змін у коді повторно запустіть пакувальник, щоб оновити ці значення.

Пов’язані матеріали

Was this useful?
On this page

On this page