Skip to content

Mac 서명(디버그 빌드) ​

이 앱은 일반적으로 scripts/package-mac-app.sh에서 빌드되며 현재 다음과 같습니다.

  • 안정적인 디버그 번들 식별자를 설정합니다: ai.openclaw.mac.debug
  • 해당 번들 ID로 Info.plist를 작성합니다(BUNDLE_ID=...를 통해 재정의).
  • scripts/codesign-mac-app.sh](https://github.com/openclaw/openclaw/blob/main/scripts/codesign-mac-app.sh)를 호출하여 기본 바이너리 및 앱 번들에 서명합니다. 그러면 macOS는 각 재구축을 동일한 서명된 번들로 처리하고 TCC 권한(알림, 접근성, 화면 녹화, 마이크, 음성)을 유지합니다. 안정적인 권한을 위해서는 실제 서명 ID를 사용하세요. 임시는 선택적이고 취약합니다(macOS 권한 참조).
  • 기본적으로 CODESIGN_TIMESTAMP=auto를 사용합니다. 개발자 ID 서명에 대해 신뢰할 수 있는 타임스탬프를 활성화합니다. 타임스탬프(오프라인 디버그 빌드)를 건너뛰려면 CODESIGN_TIMESTAMP=off를 설정하세요.
  • Info.plist에 빌드 메타데이터를 삽입합니다: OpenClawBuildTimestamp(UTC) 및 OpenClawGitCommit(짧은 해시) 그러면 About 창에 빌드, git 및 디버그/릴리스 채널이 표시될 수 있습니다.
  • 패키징에는 Node 22+가 필요합니다: 스크립트는 TS 빌드 및 Control UI 빌드를 실행합니다.
  • 환경에서 SIGN_IDENTITY를 읽습니다. 항상 인증서로 서명하려면 쉘 rc에 export SIGN_IDENTITY="Apple Development: Your Name (TEAMID)"(또는 개발자 ID 애플리케이션 인증서)를 추가하세요. 임시 서명에는 ALLOW_ADHOC_SIGNING=1 또는 SIGN_IDENTITY="-"를 통한 명시적인 선택이 필요합니다(권한 테스트에는 권장되지 않음).
  • 서명 후 팀 ID 감사를 실행하고 앱 번들 내부의 Mach-O가 다른 팀 ID로 서명된 경우 실패합니다. SKIP_TEAM_ID_CHECK=1를 우회로 설정하세요.

사용법 ​

bash
# from repo root
scripts/package-mac-app.sh               # auto-selects identity; errors if none found
SIGN_IDENTITY="Developer ID Application: Your Name" scripts/package-mac-app.sh   # real cert
ALLOW_ADHOC_SIGNING=1 scripts/package-mac-app.sh    # ad-hoc (permissions will not stick)
SIGN_IDENTITY="-" scripts/package-mac-app.sh        # explicit ad-hoc (same caveat)
DISABLE_LIBRARY_VALIDATION=1 scripts/package-mac-app.sh   # dev-only Sparkle Team ID mismatch workaround

임시 서명 메모 ​

SIGN_IDENTITY="-"(임시)로 서명하면 스크립트는 자동으로 강화된 런타임(--options runtime)을 비활성화합니다. 이는 앱이 동일한 팀 ID를 공유하지 않는 내장된 프레임워크(예: Sparkle)를 로드하려고 할 때 충돌을 방지하는 데 필요합니다. 임시 서명은 또한 TCC 권한 지속성을 손상시킵니다. 복구 단계는 macOS 권한을 참조하세요.

About에 대한 메타데이터 구축 ​

package-mac-app.sh는 번들에 다음을 스탬프 처리합니다.

  • OpenClawBuildTimestamp: 패키지 시간의 ISO8601 UTC
  • OpenClawGitCommit: 짧은 git 해시(또는 사용할 수 없는 경우 unknown)

정보 탭은 이러한 키를 읽어 버전, 빌드 날짜, git 커밋 및 디버그 빌드인지 여부를 표시합니다(#if DEBUG를 통해). 코드 변경 후 패키저를 실행하여 이러한 값을 새로 고치십시오.

왜? ​

TCC 권한은 번들 식별자 및 코드 서명과 연결되어 있습니다. UUID가 변경된 서명되지 않은 디버그 빌드로 인해 macOS는 다시 빌드할 때마다 승인을 잊어버렸습니다. 바이너리에 서명하고(기본적으로 임시) 고정된 번들 ID/경로(dist/OpenClaw.app)를 유지하면 VibeTunnel 접근 방식과 일치하여 빌드 간의 승인이 유지됩니다.

비공식 커뮤니티 번역 · 공식 영문 문서