macOS companion app

Assinatura no macOS

assinatura no Mac (compilações de depuração)

scripts/package-mac-app.sh compila e empacota o aplicativo em um caminho fixo (dist/OpenClaw.app) e, em seguida, chama scripts/codesign-mac-app.sh para assiná-lo. As permissões do TCC estão vinculadas ao ID do pacote e à assinatura de código; manter ambos estáveis (e o aplicativo em um caminho fixo) entre recompilações impede que o macOS esqueça as concessões do TCC (notificações, acessibilidade, gravação de tela, microfone e reconhecimento de voz).

  • O identificador do pacote de depuração usa ai.openclaw.mac.debug por padrão (substitua com BUNDLE_ID=...).
  • Node: >=22.19.0 <23 ou >=23.11.0 (engines no package.json do repositório). O empacotador também compila a interface de controle (pnpm ui:build).
  • Por padrão, exige uma identidade de assinatura real; o script de assinatura encerra com erro se nenhuma for encontrada e ALLOW_ADHOC_SIGNING não estiver definido. A assinatura ad hoc (SIGN_IDENTITY="-") exige ativação explícita e não mantém as permissões do TCC entre recompilações. Consulte permissões do macOS.
  • SIGN_IDENTITY do ambiente (por exemplo, export SIGN_IDENTITY="Apple Development: Your Name (TEAMID)" ou um certificado Developer ID Application). Sem essa variável, codesign-mac-app.sh seleciona automaticamente uma identidade nesta ordem: Developer ID Application, Apple Distribution, Apple Development e, por fim, a primeira identidade válida de assinatura de código encontrada.
  • CODESIGN_TIMESTAMP=auto (padrão) habilita carimbos de data/hora confiáveis somente para assinaturas Developer ID Application. Defina como on/off para forçar a ativação ou desativação.
  • Registra no Info.plist OpenClawBuildTimestamp (ISO8601 UTC) e OpenClawGitCommit (hash curto, unknown se indisponível), para que a aba Sobre possa mostrar a compilação, o commit do Git e o canal de depuração/lançamento.
  • Executa uma auditoria do ID da equipe após a assinatura e falha se algum Mach-O dentro do pacote tiver um ID da equipe diferente. Defina SKIP_TEAM_ID_CHECK=1 para ignorá-la.

Uso

bash
# a partir da raiz do repositórioscripts/package-mac-app.sh                                                      # seleciona automaticamente a identidade; gera erro se nenhuma for encontradaSIGN_IDENTITY="Developer ID Application: Your Name" scripts/package-mac-app.sh   # certificado realALLOW_ADHOC_SIGNING=1 scripts/package-mac-app.sh                                 # ad hoc (as permissões não serão mantidas)SIGN_IDENTITY="-" scripts/package-mac-app.sh                                     # ad hoc explícita (mesma ressalva)DISABLE_LIBRARY_VALIDATION=1 scripts/package-mac-app.sh                          # solução alternativa somente para desenvolvimento para incompatibilidade do ID da equipe do Sparkle

Observação sobre assinatura ad hoc

SIGN_IDENTITY="-" desabilita o Hardened Runtime (--options runtime) para evitar falhas quando o aplicativo carrega frameworks incorporados (como o Sparkle) que não compartilham o mesmo ID da equipe. As assinaturas ad hoc também impedem a persistência das permissões do TCC; consulte permissões do macOS para ver as etapas de recuperação.

Metadados da compilação para a aba Sobre

A aba Sobre lê OpenClawBuildTimestamp e OpenClawGitCommit do Info.plist para mostrar a versão, a data da compilação, o commit do Git e se a compilação é de DEPURAÇÃO (por meio de #if DEBUG). Execute novamente o empacotador após alterações no código para atualizar esses valores.

Relacionados

Was this useful?
On this page

On this page