This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
Desenvolver aplicações Defold para a plataforma macOS é um processo direto, com pouquíssimas considerações.
A configuração específica de uma aplicação macOS é feita na seção macOS do arquivo de configurações game.project.
O ícone da aplicação usado para um jogo macOS deve estar no formato .icns. Você pode criar facilmente um arquivo .icns a partir de um conjunto de arquivos .png reunidos como um .iconset. Siga as instruções oficiais para criar um arquivo .icns. Um resumo breve das etapas envolvidas:
game.iconsetCopie os arquivos de ícone para a pasta criada:
icon_16x16.pngicon_16x16@2x.pngicon_32x32.pngicon_32x32@2x.pngicon_128x128.pngicon_128x128@2x.pngicon_256x256.pngicon_256x256@2x.pngicon_512x512.pngicon_512x512@2x.png.iconset em um arquivo .icns usando a ferramenta de linha de comando iconutil:iconutil -c icns -o game.icns game.iconset
Você pode publicar sua aplicação na Mac App Store, usando uma loja ou portal de terceiros como Steam ou itch.io, ou por conta própria por meio de um site. Antes de publicar sua aplicação, você precisa prepará-la para envio. As etapas a seguir são necessárias independentemente de como você pretende distribuir a aplicação:
$ chmod +x Game.app/Contents/MacOS/Game
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
<key>com.apple.security.cs.allow-dyld-environment-variables</key>
<true/>
</dict>
</plist>
com.apple.security.cs.allow-jit - Indica se o app pode criar memória gravável e executável usando a flag MAP_JITcom.apple.security.cs.allow-unsigned-executable-memory - Indica se o app pode criar memória gravável e executável sem as restrições impostas pelo uso da flag MAP_JITcom.apple.security.cs.allow-dyld-environment-variables - Indica se o app pode ser afetado por variáveis de ambiente do linker dinâmico, que você pode usar para injetar código no processo do appAlgumas aplicações também podem precisar de entitlements adicionais. A extensão Steamworks precisa deste entitlement extra:
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
* `com.apple.security.cs.disable-library-validation` - Indica se o app pode carregar plug-ins ou frameworks arbitrários sem exigir assinatura de código.
Todos os entitlements que podem ser concedidos a uma aplicação estão listados na documentação oficial para desenvolvedores Apple.
codesign:$ codesign --force --sign "Developer ID Application: Company Name" --options runtime --deep --timestamp --entitlements entitlement.plist Game.app
A Apple exige que todo software distribuído fora da Mac App Store seja notarizado pela Apple para executar por padrão no macOS Catalina. Consulte a documentação oficial para aprender como adicionar notarização a um ambiente de build por script fora do Xcode. Um resumo breve das etapas envolvidas:
Siga as etapas acima de adicionar permissões e assinar a aplicação.
Compacte e envie seu jogo para notarização usando altool.
$ xcrun altool --notarize-app
--primary-bundle-id "com.acme.foobar"
--username "AC_USERNAME"
--password "@keychain:AC_PASSWORD"
--asc-provider <ProviderShortname>
--file Game.zip
altool[16765:378423] No errors uploading 'Game.zip'.
RequestUUID = 2EFE2717-52EF-43A5-96DC-0797E4CA1041
altool --notarize-app:$ xcrun altool --notarization-info 2EFE2717-52EF-43A5-96DC-0797E4CA1041
-u "AC_USERNAME"
success e grampeie o ticket de notarização ao jogo:$ xcrun stapler staple "Game.app"
O processo de publicação na Mac App Store é bem documentado na documentação Apple Developer. Certifique-se de adicionar permissões e assinar a aplicação com codesign conforme descrito acima antes de enviar.
Observação: o jogo não precisa ser notarizado ao publicar na Mac App Store.
O manifesto de privacidade é uma lista de propriedades que registra os tipos de dados coletados pelo seu aplicativo ou SDK de terceiros, e as APIs de motivos exigidos que seu aplicativo ou SDK de terceiros usa. Para cada tipo de dado que seu aplicativo ou SDK de terceiros coleta e para cada categoria de API de motivos exigidos que ele usa, o aplicativo ou SDK de terceiros precisa registrar os motivos no arquivo de manifesto de privacidade incluído no bundle.
O Defold fornece um manifesto de privacidade padrão por meio do campo Privacy Manifest no arquivo game.project. Ao criar um bundle de aplicação, o manifesto de privacidade será mesclado com quaisquer manifestos de privacidade nas dependências do projeto e incluído no bundle da aplicação.
Leia mais sobre manifestos de privacidade na documentação oficial da Apple.