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
Desarrollar aplicaciones Defold para la plataforma macOS es un proceso directo con muy pocas consideraciones a tener en cuenta.
La configuración de aplicaciones específica de macOS se hace desde la sección macOS del archivo de configuración game.project.
El icono de la aplicación usado para un juego de macOS debe estar en formato .icns. Puedes crear fácilmente un archivo .icns a partir de un conjunto de archivos .png reunidos como un .iconset. Sigue las instrucciones oficiales para crear un archivo .icns. Resumen breve de los pasos:
game.iconsetCopia los archivos de icono a la carpeta creada:
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 a un archivo .icns usando la herramienta de línea de comando iconutil:iconutil -c icns -o game.icns game.iconset
Puedes publicar tu aplicación en la Mac App Store, usando una tienda o portal de terceros como Steam o itch.io, o por tu cuenta a través de un sitio web. Antes de publicar tu aplicación, debes prepararla para el envío. Los siguientes pasos son necesarios independientemente de cómo pretendas distribuir la aplicación:
$ 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 si la app puede crear memoria escribible y ejecutable usando la bandera MAP_JITcom.apple.security.cs.allow-unsigned-executable-memory - Indica si la app puede crear memoria escribible y ejecutable sin las restricciones impuestas por el uso de la bandera MAP_JITcom.apple.security.cs.allow-dyld-environment-variables - Indica si la app puede verse afectada por variables de ambiente del enlazador dinámico, que puedes usar para inyectar código en el proceso de tu appAlgunas aplicaciones también pueden necesitar entitlements adicionales. La extensión Steamworks necesita este entitlement extra:
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
* `com.apple.security.cs.disable-library-validation` - Indica si la app puede cargar plug-ins o frameworks arbitrarios, sin requerir firma de código.
Todos los entitlements que se pueden conceder a una aplicación se listan en la documentación oficial para desarrolladores de Apple.
codesign:$ codesign --force --sign "Developer ID Application: Company Name" --options runtime --deep --timestamp --entitlements entitlement.plist Game.app
Apple requiere que todo el software distribuido fuera de la Mac App Store sea notarizado por Apple para ejecutarse por defecto en macOS Catalina. Consulta la documentación oficial para aprender cómo agregar notarización a un entorno de build con scripts fuera de Xcode. Resumen breve de los pasos:
Sigue los pasos anteriores para agregar permisos y firmar la aplicación.
Comprime y sube tu juego para notarización 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 y adjunta el ticket de notarización al juego:$ xcrun stapler staple "Game.app"
El proceso para publicar en la Mac App Store está bien documentado en la documentación de Apple Developer. Asegúrate de agregar permisos y firmar la aplicación como se describió arriba antes de enviarla.
Nota: El juego no necesita estar notarizado al publicarse en la Mac App Store.
El manifiesto de privacidad es una lista de propiedades que registra los tipos de datos recopilados por tu app o por un SDK de terceros, y las API con razones requeridas que usa tu app o el SDK de terceros. Para cada tipo de dato que recopila tu app o el SDK de terceros, y para cada categoría de API con razones requeridas que utiliza, la app o el SDK de terceros debe registrar los motivos en su archivo de manifiesto de privacidad incluido en el bundle.
Defold proporciona un manifiesto de privacidad predeterminado mediante el campo Privacy Manifest del archivo game.project. Al crear un bundle de la aplicación, el manifiesto de privacidad se fusionará con cualquier manifiesto de privacidad de las dependencias del proyecto y se incluirá en el bundle de la aplicación.
Lee más sobre los manifiestos de privacidad en la documentación oficial de Apple.