assinatura no mac (builds de depuração)
Este app geralmente é criado a partir descripts/package-mac-app.sh, que agora:
- define um identificador de bundle de depuração estável:
ai.openclaw.mac.debug - grava o Info.plist com esse bundle id (sobrescreva via
BUNDLE_ID=...) - chama
scripts/codesign-mac-app.shpara assinar o binário principal e o bundle do app, de modo que o macOS trate cada rebuild como o mesmo bundle assinado e mantenha as permissões do TCC (notificações, acessibilidade, gravação de tela, microfone, fala). Para permissões estáveis, use uma identidade de assinatura real; ad-hoc é opt-in e frágil (veja permissões do macOS). - usa
CODESIGN_TIMESTAMP=autopor padrão; ele habilita timestamps confiáveis para assinaturas Developer ID. DefinaCODESIGN_TIMESTAMP=offpara pular o timestamp (builds de depuração offline). - injeta metadados de build no Info.plist:
OpenClawBuildTimestamp(UTC) eOpenClawGitCommit(hash curto), para que o painel Sobre possa mostrar build, git e canal de depuração/produção. - O empacotamento requer Node 22+: o script executa builds em TS e o build da UI de Controle.
- lê
SIGN_IDENTITYdo ambiente. Adicioneexport SIGN_IDENTITY="Apple Development: Your Name (TEAMID)"(ou seu certificado Developer ID Application) ao rc do seu shell para sempre assinar com seu certificado. Assinatura ad-hoc exige opt-in explícito viaALLOW_ADHOC_SIGNING=1ouSIGN_IDENTITY="-"(não recomendado para testes de permissões). - executa uma auditoria de Team ID após a assinatura e falha se qualquer Mach-O dentro do bundle do app estiver assinado por um Team ID diferente. Defina
SKIP_TEAM_ID_CHECK=1para ignorar.
Uso
Nota sobre assinatura ad-hoc
Ao assinar comSIGN_IDENTITY="-" (ad-hoc), o script desativa automaticamente o Hardened Runtime (--options runtime). Isso é necessário para evitar crashes quando o app tenta carregar frameworks incorporados (como o Sparkle) que não compartilham o mesmo Team ID. Assinaturas ad-hoc também quebram a persistência das permissões do TCC; veja permissões do macOS para etapas de recuperação.
Metadados de build para o Sobre
package-mac-app.sh carimba o bundle com:
OpenClawBuildTimestamp: ISO8601 UTC no momento do empacotamentoOpenClawGitCommit: hash curto do git (ouunknownse indisponível)
#if DEBUG). Execute o empacotador para atualizar esses valores após mudanças no código.
Por quê
As permissões do TCC estão vinculadas ao identificador do bundle e à assinatura de código. Builds de depuração sem assinatura, com UUIDs variáveis, faziam o macOS esquecer as concessões após cada rebuild. Assinar os binários (ad-hoc por padrão) e manter um bundle id/caminho fixo (dist/OpenClaw.app) preserva as concessões entre builds, alinhando-se à abordagem do VibeTunnel.