Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
Exportando para macOS
Ver também
Esta página descreve como exportar um projeto Godot para o macOS. Se você está procurando compilar editor ou exportar binários de modelo de origem, leia Compilando para macOS.
Aplicativos macOS exportados usando os modelos oficiais de exportação são exportados como um único pacote binário Universal 2 .app, uma pasta com uma estrutura específica que armazena o executável, bibliotecas e todos os arquivos do projeto. Esse pacote pode ser exportado como está, compactado em um arquivo ZIP ou em uma imagem de disco DMG (suportado apenas ao exportar a partir do macOS). Binários universais para macOS oferecem suporte tanto às arquiteturas Intel x86_64 quanto ARM64 (Apple Silicon).
Aviso
Devido a limitações do sistema de arquivos, pacotes .app exportados do Windows não possuem a flag executable e não rodarão no macOS. Projetos exportados como .zip não são afetados por esse problema. Para rodar pacotes .app exportados do Windows no macOS, transfira o .app para um dispositivo rodando macOS ou Linux e use o comando de terminal chmod +x {executable_name} para adicionar a permissão de execução ao executable. O executável principal localizado na subpasta Contents/MacOS/, bem como executáveis auxiliares opcionais na subpasta Contents/Helpers/, devem ter a permissão de executable para que o pacote .app seja válido.
Requisitos
Baixe os modelos de exportação Godot. Use o menu Godot:
Editor > Gerenciar modelos de exportação.Um
Bundle identifierválido e único deve ser definido na seçãoApplicationdas opções de exportação.
Nota
Um ID de pacote (bundle ID) válido só pode conter caracteres alfanuméricos, hifens e pontos (A-Z, a-z, 0-9, - e .). A Apple recomenda usar o formato DNS reverso (por exemplo, com.exemplo.seu-jogo) de um domínio que você possui, para que seu ID de pacote seja garantidamente único. Os IDs de pacote diferenciam maiúsculas de minúsculas. Veja CFBundleIdentifier.
Aviso
Projetos exportados sem assinatura de código e notarização serão bloqueados pelo Gatekeeper caso sejam baixados de fontes desconhecidas. Consulte a página Running Godot apps on macOS para mais informações.
Assinatura de código e notarização
Por padrão, o macOS executará apenas aplicativos que estejam assinados e notarizados. Caso utilize qualquer outra configuração de assinatura, consulte Running Godot apps on macOS para alternativas.
Para autenticar um aplicativo, você deve ter um Certificado de identificação de desenvolvedor da Apple válido.
Se você possui um Apple Developer ID Certificate e está exportando a partir do macOS
Instale as ferramentas de linha de comando do Xcode e abra o Xcode pelo menos uma vez ou execute o comando sudo xcodebuild -license accept para aceitar o contrato de licença.
Para assinar o aplicativo exportado
Selecione
Xcode codesignna opçãoCode Signing > Codesign.Defina uma identidade de certificado Apple ID válida (Certificado "Common Name") na seção
Code Signing > Identity.
Para notarizar o aplicativo exportado
Selecione
Xcode notarytoolna opçãoNotarization > Notarization.Desative a permissão (entitlement) de
Debugging.Defina um login de Apple ID válido / senha específica do app ou UUID / Chave da API do App Store Connect na seção
Notarization.
Você pode usar o comando xcrun notarytool history para verificar o status da notarização e usar o comando xcrun notarytool log {ID} para baixar o log de notarização .
Se você encontrar problemas de notarização, consulte Resolvendo problemas comuns de notarização para obter mais informações.
Após a conclusão da notarização, apresente o ticket no projeto exportado.
Se você possui um Apple Developer ID Certificate e está exportando a partir do Linux ou Windows
Instale o rcodesign e configure o caminho para o rcodesign na opção Editor Settings > Export > macOS > rcodesign.
Para assinar o aplicativo exportado
Selecione
rcodesignna opçãoCode Signing > Codesign.Defina um arquivo de certificado PKCS #12 do Apple ID válido e a senha na seção
Code Signing.
Para notarizar o aplicativo exportado
Selecione
rcodesignna opçãoNotarization > Notarization.Desative a permissão (entitlement) de
Debugging.Defina a UUID / Chave da API do App Store Connect válida <https://developer.apple.com/documentation/appstoreconnectapi> na seção
Notarization.
Você pode usar o comando rcodesign notary-log para verificar o status da notarização.
Após a notarização ser concluída, use o comando rcodesign staple para grampear (staple) o ticket ao projeto exportado.
Se você não tiver um certificado de ID de desenvolvedor da Apple
Selecione
Built-in (ad-hoc only)na opçãoCode Signing > Codesign.Selecione
Disabledna opçãoNotarization > Notarization.
Neste caso, o Godot usará uma assinatura ad-hoc, o que facilitará a execução de um aplicativo exportado para os usuários finais; consulte a página Executando aplicativos Godot no macOS para obter mais informações.
Opções de Assinatura
Opção |
Descrição |
|---|---|
Codesign (Assinatura de Código) |
Ferramenta utilizada para assinatura de código. |
Identidade |
O "Nome Completo" ou "Nome Comum" da identidade de assinatura, armazenado no chaveiro (keychain) do macOS. [1] |
Arquivo de Certificado |
O arquivo de certificado PKCS #12. [2] |
Senha do Certificado |
Senha para o arquivo de certificado. [2] |
Opções personalizadas |
Array de argumentos de linha de comando passados para a ferramenta de assinatura de código. |
Opções de Notarização
Opção |
Descrição |
|---|---|
Notarização |
Ferramenta utilizada para notarização. |
Nome Apple ID |
Nome da conta Apple ID (endereço de e-mail). [3] |
Senha Apple ID |
Senha específica do aplicativo Apple ID. Veja Usando senhas específicas do aplicativo para habilitar a autenticação de dois fatores e criar a senha do aplicativo. [3] |
ID Apple Team |
ID da Equipe ("Unidade de Organização"), se o seu Apple ID pertencer a várias equipes (opcional). [3] |
UUID da API |
UUID do emissor da API do Apple App Store Connect. |
Chave da API |
Chave da API do Apple App Store Connect. |
Nota
Você deve definir o Nome/Senha do Apple ID ou o UUID/Chave da API do App Store Connect.
Essas opções ficam visíveis somente ao usar a ferramenta notarytool do Xcode.
Consulte Notarizing macOS Software Before Distribution para obter mais informações.
Direitos
Entitlements do Hardened Runtime
As permissões (entitlements) do Hardened Runtime gerenciam opções de segurança e política de acesso a recursos. Veja Hardened Runtime para mais informações.
Direito |
Descrição |
|---|---|
Permitir execução de código JIT [4] |
Permite a criação de memória gravável e executável para código JIT. Se você estiver usando add-ons com código nativo dinâmico ou automodificável, ative-os de acordo com a documentação do add-on. |
Permitir memória executável sem assinatura [4] |
Permite a criação de memória gravável e executável sem restrições de JIT. Se você estiver usando add-ons com código nativo dinâmico ou automodificável, ative-os de acordo com a documentação do add-on. |
Permitir variáveis de ambiente DYLD [4] |
Allows app to use dynamic linker environment variables to inject code. If you are using add-ons with dynamic or self-modifying native code, enable them according to the add-on documentation. |
Desativar Validação da Biblioteca |
Permite que o aplicativo carregue bibliotecas e frameworks arbitrários. Ative esta opção se estiver usando complementos GDExtension ou assinatura ad-hoc, ou se desejar oferecer suporte a complementos externos fornecidos pelo usuário. |
Entrada de Áudio |
Enable if you need to use the microphone or other audio input sources, if it's enabled you should also provide usage message in the |
Câmera |
Enable if you need to use the camera, if it's enabled you should also provide usage message in the |
Localização |
Enable if you need to use location information from Location Services, if it's enabled you should also provide usage message in the |
Contatos |
[5] Enable to allow access contacts in the user's address book, if it's enabled you should also provide usage message in the |
Calendários |
[5] Enable to allow access to the user's calendar, if it's enabled you should also provide usage message in the |
Biblioteca de Fotos |
[5] Enable to allow access to the user's Photos library, if it's enabled you should also provide usage message in the |
Eventos Apple |
[5] Ative para permitir que o aplicativo envie eventos Apple para outros aplicativos. |
Depuração |
[6] Você pode ativar temporariamente esta permissão para usar depuradores nativos (GDB, LLDB) com o aplicativo exportado. Esta permissão deve ser desativada para exportações de produção. |
As permissões (entitlements) Allow JIT Code Execution, Allow Unsigned Executable Memory e Allow DYLD Environment Variables estão sempre ativadas para as exportações Godot Mono e não ficam visíveis nas opções de exportação.
Esses recursos não são suportados nativamente pelo Godot, ative-os apenas se estiver usando add-ons que os exijam.
Para notarizar um aplicativo, você deve desativar a permissão Debugging.
Permissão de Sandbox do Aplicativo (App Sandbox Entitlement)
O App Sandbox restringe o acesso aos dados do usuário, rede e dispositivos. Aplicativos em sandbox não podem acessar a maior parte do sistema de arquivos, não podem usar caixas de diálogo de arquivo personalizadas e não podem executar binários (usando OS.execute e OS.create_process) fora do pacote .app. Veja App Sandbox para mais informações.
Nota
Para distribuir um aplicativo através da App Store, você deve ativar o App Sandbox.
Direito |
Descrição |
|---|---|
Habilitado |
Ativa o App Sandbox. |
Servidor de Rede |
Ative para permitir que o aplicativo escute conexões de rede de entrada. |
Cliente de Rede |
Ative para permitir que o aplicativo estabeleça conexões de rede de saída. |
Dispositivo USB |
Permite que o aplicativo interaja com dispositivos USB. Este direito é necessário para usar controles com fio. |
Bluetooth do Dispositivo |
Habilite para permitir que o aplicativo interaja com dispositivos Bluetooth. Este direito é necessário para usar controles sem fio. |
Download de Arquivos [7] |
Permite ler ou escrever acesso à pasta "Downloads" do usuário. |
Arquivos de imagens [7] |
Permite o acesso para leitura ou escrever na pasta "Pictures" do usuário. |
Arquivos de música [7] |
Permite o acesso para leitura ou escrever na pasta "Música" do usuário. |
Arquivos Filmes [7] |
Permite o acesso para leitura ou escrever na pasta "Vídeos" do usuário. |
Arquivos selecionados pelo usuário [7] |
Permite acesso de leitura ou gravação a uma pasta arbitrária. Para obter acesso, uma pasta deve ser selecionada na caixa de diálogo de arquivos nativa pelo usuário. |
Executável Auxiliar (Helper Executable) |
Lista de executáveis auxiliares a serem incorporados ao pacote do aplicativo. Aplicativos em sandbox estão limitados a executar apenas esses executáveis. |
You can optionally provide usage messages for various folders in the privacy/*_folder_usage_description options.
Nota
Você pode sobregravar as permissões padrão selecionando um arquivo de permissões (entitlements) personalizado; neste caso, todas as outras permissões são ignoradas.
Variáveis de ambiente
Você pode usar as seguintes variáveis de ambiente para definir opções de exportação fora do editor. Durante o processo de exportação, elas substituem os valores que você definiu no menu de exportação.
Opção de exportação |
Variável de ambiente |
|---|---|
Encryption / Encryption Key (Criptografia / Chave de Criptografia) |
|
Options / Codesign / Certificate File (Arquivo de Certificado) |
|
Options / Codesign / Certificate Password (Senha do Certificado) |
|
Options / Codesign / Provisioning Profile (Perfil de Provisionamento) |
|
Options / Notarization / API UUID |
|
Options / Notarization / API Key (Chave da API) |
|
Options / Notarization / API Key ID |
|
Options / Notarization / Apple ID Name (Nome do Apple ID) |
|
Options / Notarization / Apple ID Password (Senha do Apple ID) |
|
Opções de exportação
Você pode encontrar uma lista completa das opções de exportação disponíveis na referência da classe EditorExportPlatformMacOS.