macOS companion app

macOS 서명

Mac 서명(디버그 빌드)

scripts/package-mac-app.sh는 앱을 빌드하여 고정 경로(dist/OpenClaw.app)에 패키징한 다음, scripts/codesign-mac-app.sh를 호출해 서명합니다. TCC 권한은 번들 ID와 코드 서명에 연결됩니다. 재빌드할 때 두 항목을 안정적으로 유지하고 앱 경로도 고정하면 macOS가 TCC 허용 권한(알림, 손쉬운 사용, 화면 기록, 마이크, 음성)을 잊지 않습니다.

  • 디버그 번들 식별자의 기본값은 ai.openclaw.mac.debug입니다(BUNDLE_ID=...로 재정의).
  • Node: >=22.19.0 <23 또는 >=23.11.0(저장소 package.jsonengines). 패키저는 Control UI도 빌드합니다(pnpm ui:build).
  • 기본적으로 실제 서명 ID가 필요합니다. 서명 ID를 찾지 못하고 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, 발견된 첫 번째 유효 코드 서명 ID 순으로 ID를 자동 선택합니다.
  • CODESIGN_TIMESTAMP=auto(기본값)는 Developer ID Application 서명에만 신뢰할 수 있는 타임스탬프를 활성화합니다. 어느 쪽이든 강제하려면 on/off로 설정하세요.
  • About 탭에서 빌드, Git 및 디버그/릴리스 채널을 표시할 수 있도록 Info.plist에 OpenClawBuildTimestamp(ISO8601 UTC)와 OpenClawGitCommit(짧은 해시, 사용할 수 없으면 unknown)을 기록합니다.
  • 서명 후 Team ID 감사를 실행하며, 번들 내부의 Mach-O 중 Team ID가 다른 항목이 있으면 실패합니다. 건너뛰려면 SKIP_TEAM_ID_CHECK=1을 설정하세요.

사용법

bash
# 저장소 루트에서scripts/package-mac-app.sh                                                      # ID를 자동 선택하며, 찾지 못하면 오류 발생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                          # 개발 전용 Sparkle Team ID 불일치 우회책

임시 서명 참고 사항

SIGN_IDENTITY="-"는 앱이 동일한 Team ID를 공유하지 않는 내장 프레임워크(예: Sparkle)를 로드할 때 충돌하는 것을 방지하기 위해 Hardened Runtime(--options runtime)을 비활성화합니다. 또한 임시 서명은 TCC 권한의 지속성을 손상시킵니다. 복구 단계는 macOS 권한을 참조하세요.

About의 빌드 메타데이터

About 탭은 Info.plist에서 OpenClawBuildTimestampOpenClawGitCommit을 읽어 버전, 빌드 날짜, Git 커밋 및 빌드가 DEBUG인지 여부(#if DEBUG 사용)를 표시합니다. 코드 변경 후 이러한 값을 갱신하려면 패키저를 다시 실행하세요.

관련 문서

Was this useful?
On this page

On this page