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
macOS 플랫폼용 Defold 어플리케이션 개발은 고려할 사항이 거의 없어 간단한 과정입니다.
macOS 전용 어플리케이션 구성은 game.project 설정 파일의 macOS section에서 수행합니다.
macOS 게임에 사용되는 어플리케이션 아이콘은 .icns 포멧이어야 합니다. .iconset으로 모은 .png 파일 세트에서 .icns 파일을 쉽게 만들 수 있습니다. .icns 파일 생성에 대한 공식 안내를 따르세요. 관련 단계의 간단한 요약은 다음과 같습니다.
game.iconset생성한 폴더에 아이콘 파일을 복사합니다.
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.pngiconutil 커맨드 라인 도구를 사용해 .iconset 폴더를 .icns 파일로 변환합니다.iconutil -c icns -o game.icns game.iconset
Mac App Store에 어플리케이션을 배포하거나, Steam 또는 itch.io 같은 서드파티 스토어 또는 포털을 사용하거나, 웹사이트를 통해 직접 배포할 수 있습니다. 어플리케이션을 배포하기 전에 제출을 위해 준비해야 합니다. 어플리케이션을 어떤 방식으로 배포하려는지와 관계없이 다음 단계가 필요합니다.
$ 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 - 앱이 MAP_JIT 플래그를 사용해 쓰기와 실행이 가능한 메모리를 생성할 수 있는지를 나타냅니다.com.apple.security.cs.allow-unsigned-executable-memory - 앱이 MAP_JIT 플래그 사용으로 부과되는 제한 없이 쓰기와 실행이 가능한 메모리를 생성할 수 있는지를 나타냅니다.com.apple.security.cs.allow-dyld-environment-variables - 앱의 프로세스에 코드를 주입하는 데 사용할 수 있는 dynamic linker environment variables의 영향을 앱이 받을 수 있는지를 나타냅니다.일부 어플리케이션은 추가 entitlements가 필요할 수도 있습니다. Steamworks 익스텐션에는 다음 추가 entitlement가 필요합니다.
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
* `com.apple.security.cs.disable-library-validation` - 앱이 code signing 없이 임의의 plug-in 또는 framework를 로드할 수 있는지를 나타냅니다.
어플리케이션에 부여할 수 있는 모든 entitlements는 공식 Apple developer documentation에 나열되어 있습니다.
codesign을 사용해 게임에 서명합니다.$ codesign --force --sign "Developer ID Application: Company Name" --options runtime --deep --timestamp --entitlements entitlement.plist Game.app
Apple은 Mac App Store 외부에서 배포되는 모든 소프트웨어가 macOS Catalina에서 기본적으로 실행되려면 Apple의 공증(notarization)을 받아야 한다고 요구합니다. Xcode 외부의 스크립트 빌드 환경에 공증을 추가하는 방법은 공식 문서를 참고하세요. 관련 단계의 간단한 요약은 다음과 같습니다.
위에서 설명한 권한 추가와 어플리케이션 서명 단계를 따릅니다.
altool을 사용해 게임을 zip으로 압축하고 공증을 위해 업로드합니다.
$ 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 호출에서 반환된 request UUID를 사용해 제출 상태를 확인합니다.$ xcrun altool --notarization-info 2EFE2717-52EF-43A5-96DC-0797E4CA1041
-u "AC_USERNAME"
success가 될 때까지 기다린 뒤 공증 티켓(notarization ticket)을 게임에 붙입니다.$ xcrun stapler staple "Game.app"
Mac App Store에 배포하는 과정은 Apple Developer documentation에 잘 문서화되어 있습니다. 제출하기 전에 위에서 설명한 대로 어플리케이션에 권한을 추가하고 codesign을 수행해야 합니다.
참고: Mac App Store에 배포할 때는 게임을 공증하지 않아도 됩니다.
개인정보 보호 메니페스트는 앱 또는 서드파티 SDK가 수집하는 데이터 유형과 앱 또는 서드파티 SDK가 사용하는 필수 사유 API(required reasons API)를 기록하는 프로퍼티 리스트입니다. 앱 또는 서드파티 SDK가 수집하는 각 데이터 유형과 사용하는 필수 사유 API 카테고리마다, 앱 또는 서드파티 SDK는 번들에 포함된 개인정보 보호 메니페스트 파일에 그 사유를 기록해야 합니다.
Defold는 game.project 파일의 Privacy Manifest 필드를 통해 기본 개인정보 보호 메니페스트를 제공합니다. 어플리케이션 번들을 만들 때 개인정보 보호 메니페스트는 프로젝트 종속성에 있는 모든 개인정보 보호 메니페스트와 병합되어 어플리케이션 번들에 포함됩니다.
개인정보 보호 메니페스트에 대한 자세한 내용은 Apple 공식 문서를 읽어보세요.