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.json의engines). 패키저는 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을 설정하세요.
사용법
# 저장소 루트에서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에서 OpenClawBuildTimestamp와 OpenClawGitCommit을 읽어 버전, 빌드 날짜, Git 커밋 및 빌드가 DEBUG인지 여부(#if DEBUG 사용)를 표시합니다. 코드 변경 후 이러한 값을 갱신하려면 패키저를 다시 실행하세요.
관련 문서
Was this useful?