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.debugpor padrão (substitua comBUNDLE_ID=...). - Node:
>=22.19.0 <23ou>=23.11.0(enginesnopackage.jsondo 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_SIGNINGnã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. - Lê
SIGN_IDENTITYdo ambiente (por exemplo,export SIGN_IDENTITY="Apple Development: Your Name (TEAMID)"ou um certificado Developer ID Application). Sem essa variável,codesign-mac-app.shseleciona 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 comoon/offpara forçar a ativação ou desativação.- Registra no Info.plist
OpenClawBuildTimestamp(ISO8601 UTC) eOpenClawGitCommit(hash curto,unknownse 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=1para ignorá-la.
Uso
# 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 SparkleObservaçã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.