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
iOS용 게임 번들링은 Mac 버전 Defold Editor에서만 사용할 수 있습니다.
iOS에서는 빌드해서 휴대폰이나 태블릿에서 실행하려는 모든 앱이 Apple에서 발급한 인증서와 provisioning profile로 서명되어야 합니다. 이 매뉴얼은 iOS용 게임을 번들링하는 데 필요한 단계를 설명합니다. 개발 중에는 컨텐츠와 코드를 기기로 직접 핫 리로드할 수 있으므로 development app을 통해 게임을 실행하는 방식이 선호되는 경우가 많습니다.
iOS 앱과 관련된 보안은 여러 구성요소로 이루어져 있습니다. 필요한 도구에 액세스하려면 Apple’s iOS Developer Program에 가입해야 합니다. 등록한 뒤 Apple’s Developer Member Center로 이동합니다.

Certificates, Identifiers & Profiles 섹션에는 필요한 모든 도구가 포함되어 있습니다. 여기에서 다음 항목을 생성, 삭제, 편집할 수 있습니다.
some.prefix.*)를 등록할 수 있습니다. App ID에는 앱이 Passbook 통합, Game Center 등을 활성화하는지와 같은 Application Service 정보가 포함될 수 있습니다. 이러한 App ID는 와일드카드 식별자가 될 수 없습니다. Application Services가 작동하려면 어플리케이션의 bundle identifier가 App ID 식별자와 일치해야 합니다.Defold에서 게임과 앱에 서명하려면 유효한 인증서와 유효한 provisioning profile이 필요합니다.
Member Center 홈페이지에서 할 수 있는 작업 중 일부는 Xcode 개발 환경 안에서도 수행할 수 있습니다. 단, Xcode가 설치되어 있어야 합니다.

Xcode가 설치되어 있지 않다면 iTunes에서 identifier를 찾을 수 있습니다. 기기 아이콘을 클릭하고 기기를 선택합니다.

Xcode 7부터는 누구나 Xcode를 설치하고 무료로 실제 기기에서 개발할 수 있습니다. iOS Developer Program에 가입할 필요가 없습니다. 대신 Xcode가 개발자용 인증서(1년 동안 유효)와 특정 기기의 앱용 provisioning profile(1주일 동안 유효)을 자동으로 발급합니다.
Defold 프로젝트에서 같은 bundle identifier를 사용해야 하므로 bundle identifier를 기록해 두세요.
Xcode가 앱용 Provisioning Profile과 Signing Certificate를 생성했는지 확인합니다.

앱이 작동하는 것을 확인한 뒤 디스크에서 앱을 찾습니다. “Report Navigator”의 Build report에서 빌드 위치를 확인할 수 있습니다.

앱을 찾은 뒤 오른쪽 클릭하고 Show Package Contents를 선택합니다.


이 provision 파일은 code signing identity와 함께 사용해 Defold에서 앱에 1주일 동안 서명할 수 있습니다.
provision이 만료되면 위에서 설명한 대로 Xcode에서 앱을 다시 빌드하고 새 임시 provision 파일을 받아야 합니다.
code signing identity와 provisioning profile이 있으면 에디터에서 게임용 독립 실행 어플리케이션 번들을 생성할 수 있습니다. 메뉴에서 Project ▸ Bundle... ▸ iOS Application...을 선택하면 됩니다.

code signing identity를 선택하고 mobile provisioning 파일을 찾습니다. 번들링할 아키텍처(32 bit, 64 bit, iOS simulator)와 variant(Debug 또는 Release)를 선택합니다. 원한다면 Sign application 체크박스를 해제해 서명 프로세스를 건너뛰고 나중에 수동으로 서명할 수 있습니다.
iOS simulator에서 게임을 테스트할 때는 Sign application 체크박스를 반드시 해제해야 합니다. 어플리케이션을 설치할 수는 있지만 부팅되지 않습니다.
Create Bundle을 누르면 컴퓨터에서 번들이 생성될 위치를 지정하라는 프롬프트가 표시됩니다.

앱에서 사용할 아이콘, launch screen storyboard 등은 iOS section의 game.project 프로젝트 설정 파일에서 지정합니다.
게임을 번들링할 때는 사용할 엔진 유형을 선택해야 합니다. 기본 옵션은 세 가지입니다:
이 서로 다른 버전은 Build variants라고도 부릅니다.
Project ▸ Build를 선택하면 항상 디버그 버전이 만들어집니다.
이 유형의 실행 파일은 여러 유용한 디버깅 기능을 포함하고 있으므로 일반적으로 게임 개발 중에 사용됩니다:
print() 함수의 로그와 dmLogInfo(), dmLogError() 등을 사용하는 네이티브 익스텐션의 로그도 출력합니다. 이러한 로그를 읽는 방법은 게임 및 시스템 로그 매뉴얼에서 확인하세요.이 변형은 디버깅 기능이 비활성화되어 있습니다. 게임을 앱 스토어에 릴리스하거나 다른 방식으로 플레이어에게 공유할 준비가 되었을 때 이 옵션을 선택해야 합니다. 다음과 같은 여러 이유로 디버깅 기능이 활성화된 게임을 릴리스하는 것은 권장되지 않습니다:
이 실행 파일은 그래픽과 사운드 없이 실행됩니다. 즉 CI 서버에서 게임 유닛/스모크 테스트를 실행하거나, 클라우드에서 게임 서버로 사용할 수도 있습니다.
Bundle 다이얼로그의 “Install on connected device”와 “Launch installed app” 체크박스를 사용해 빌드된 번들을 설치하고 실행할 수 있습니다.

이 기능이 작동하려면 ios-deploy 커맨드 라인 도구가 설치되어 있어야 합니다. 가장 간단한 설치 방법은 Homebrew를 사용하는 것입니다.
$ brew install ios-deploy
에디터가 ios-deploy 도구의 설치 위치를 감지하지 못하면 Preferences에서 위치를 지정해야 합니다.
storyboard 파일은 Xcode로 생성합니다. Xcode를 시작하고 새 프로젝트를 생성합니다. iOS와 Single View App을 선택합니다.

Next를 클릭하고 프로젝트 설정을 계속 진행합니다. Product Name을 입력합니다.

Create를 클릭해 과정을 마칩니다. 이제 프로젝트가 생성되었으므로 storyboard 생성을 진행할 수 있습니다.

이미지를 드래그-앤-드롭해 프로젝트로 임포트합니다. 다음으로 Assets.xcassets를 선택하고 이미지를 Assets.xcassets에 드롭합니다.

LaunchScreen.storyboard를 열고 더하기 버튼(+)을 클릭합니다. 다이얼로그에 “imageview”를 입력해 ImageView 컴포넌트를 찾습니다.

Image View 컴포넌트를 storyboard 위로 드래그합니다.

Image 드롭다운에서 앞서 Assets.xcassets에 추가한 이미지를 선택합니다.

이미지를 배치하고 필요한 다른 조정을 수행합니다. Label이나 다른 UI 요소를 추가할 수도 있습니다. 완료되면 active scheme을 “Build -> Any iOS Device (arm64, armv7)”(또는 “Generic iOS Device”)로 설정하고 Product -> Build를 선택합니다. 빌드 프로세스가 끝날 때까지 기다립니다.
“Any iOS Device (arm64)”에 arm64 옵션만 있다면 “Project -> Basic -> Deployment” 설정에서 iOS Deployment target을 10.3으로 변경하세요. 이렇게 하면 storyboard가 armv7 기기(예: iPhone5c)와 호환됩니다.
storyboard에서 이미지를 사용하면 해당 이미지는 LaunchScreen.storyboardc에 자동으로 포함되지 않습니다. 리소스를 포함하려면 game.project의 Bundle Resources 필드를 사용하세요.
예를 들어 Defold 프로젝트에 LaunchScreen 폴더를 만들고 그 안에 ios 폴더를 생성합니다(ios 폴더는 iOS 번들에만 이 파일들을 포함하기 위해 필요합니다). 파일을 LaunchScreen/ios/에 넣습니다. 이 경로를 Bundle Resources에 추가합니다.

마지막 단계는 컴파일된 LaunchScreen.storyboardc 파일을 Defold 프로젝트에 복사하는 것입니다. Finder에서 다음 위치를 열고 LaunchScreen.storyboardc 파일을 Defold 프로젝트로 복사합니다.
/Library/Developer/Xcode/DerivedData/YOUR-PRODUCT-NAME-cbqnwzfisotwygbybxohrhambkjy/Build/Intermediates.noindex/YOUR-PRODUCT-NAME.build/Debug-iphonesimulator/YOUR-PRODUCT-NAME.build/Base.lproj/LaunchScreen.storyboardc
포럼 사용자 Sergey Lerg가 과정을 보여주는 비디오 튜토리얼을 만들었습니다.
storyboard 파일이 준비되면 game.project에서 참조할 수 있습니다.
asset catalog를 사용하는 것은 어플리케이션 아이콘을 관리하는 Apple의 권장 방식입니다. 실제로 App Store listing에 사용되는 아이콘을 제공하는 유일한 방법입니다. asset catalog는 storyboard와 같은 방식으로 Xcode를 사용해 생성합니다. Xcode를 시작하고 새 프로젝트를 생성합니다. iOS와 Single View App을 선택합니다.

Next를 클릭하고 프로젝트 설정을 계속 진행합니다. Product Name을 입력합니다.
![]()
Create를 클릭해 과정을 마칩니다. 이제 프로젝트가 생성되었으므로 asset catalog 생성을 진행할 수 있습니다.
![]()
지원되는 여러 아이콘 크기를 나타내는 빈 상자에 이미지를 드래그-앤-드롭합니다.
![]()
Notifications, Settings 또는 Spotlight용 아이콘은 추가하지 마세요.
완료되면 active scheme을 “Build -> Any iOS Device (arm64)”(또는 “Generic iOS Device”)로 설정하고 Product -> Build를 선택합니다. 빌드 프로세스가 끝날 때까지 기다립니다.
“Any iOS Device (arm64)” 또는 “Generic iOS Device”용으로 빌드해야 합니다. 그렇지 않으면 빌드를 업로드할 때 ERROR ITMS-90704 오류가 발생합니다.
![]()
마지막 단계는 컴파일된 Assets.car 파일을 Defold 프로젝트에 복사하는 것입니다. Finder에서 다음 위치를 열고 Assets.car 파일을 Defold 프로젝트로 복사합니다.
/Library/Developer/Xcode/DerivedData/YOUR-PRODUCT-NAME-cbqnwzfisotwygbybxohrhambkjy/Build/Products/Debug-iphoneos/Icons.app/Assets.car
asset catalog 파일이 준비되면 game.project에서 이 파일과 아이콘을 참조할 수 있습니다.
![]()
App Store 아이콘은 game.project에서 참조할 필요가 없습니다. iTunes Connect에 업로드할 때 Assets.car 파일에서 자동으로 추출됩니다.
에디터는 iOS 어플리케이션 번들인 .ipa 파일을 작성합니다. 기기에 이 파일을 설치하려면 다음 도구 중 하나를 사용할 수 있습니다.
ios-deploy 커맨드 라인 도구Apple Configurator 2Xcode를 통해 사용할 수 있는 iOS simulator를 다루기 위해 xcrun simctl 커맨드 라인 도구를 사용할 수도 있습니다.
# 사용 가능한 기기 목록 표시
xcrun simctl list
# iPhone X 시뮬레이터 부팅
xcrun simctl boot "iPhone X"
# 부팅된 시뮬레이터에 your.app 설치
xcrun simctl install booted your.app
# 시뮬레이터 실행
open /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app
개인정보 보호 메니페스트는 앱 또는 서드파티 SDK가 수집하는 데이터 유형과 앱 또는 서드파티 SDK가 사용하는 필수 사유 API(required reasons API)를 기록하는 프로퍼티 리스트입니다. 앱 또는 서드파티 SDK가 수집하는 각 데이터 유형과 사용하는 필수 사유 API 카테고리마다, 앱 또는 서드파티 SDK는 번들에 포함된 개인정보 보호 메니페스트 파일에 그 사유를 기록해야 합니다.
Defold는 game.project 파일의 Privacy Manifest 필드를 통해 기본 개인정보 보호 메니페스트를 제공합니다. 어플리케이션 번들을 만들 때 개인정보 보호 메니페스트는 프로젝트 종속성에 있는 모든 개인정보 보호 메니페스트와 병합되어 어플리케이션 번들에 포함됩니다.
개인정보 보호 메니페스트에 대한 자세한 내용은 Apple 공식 문서를 읽어보세요.
게임을 App Store에 제출할 때 게임에서 암호화를 사용하는 것과 관련해 Export Compliance 정보를 제공하라는 요청을 받습니다. Apple은 이것이 필요한 이유를 설명합니다:
“앱을 TestFlight 또는 App Store에 제출하면 앱이 미국 내 서버에 업로드됩니다. 미국이나 캐나다 외부에 앱을 배포하는 경우, 법인의 소재지와 관계없이 앱에는 미국 수출법이 적용됩니다. 앱이 암호화를 사용, 액세스, 포함, 구현 또는 통합하는 경우 이는 암호화 소프트웨어의 수출로 간주되며, 앱에는 미국 수출 규정 준수 요구사항과 앱을 배포하는 국가의 수입 규정 준수 요구사항이 적용됩니다.”
Defold 게임엔진은 다음 목적에 암호화를 사용합니다.
Defold 엔진에서 이러한 암호화 사용은 미국 및 유럽연합 법에 따라 export compliance 문서 요구사항에서 면제됩니다. 대부분의 Defold 프로젝트는 면제 상태로 남지만, 다른 암호화 방법을 추가하면 이 상태가 달라질 수 있습니다. 프로젝트가 이러한 법률과 App Store 규칙의 요구사항을 충족하는지 확인하는 것은 사용자의 책임입니다. 자세한 내용은 Apple의 Export Compliance Overview를 참고하세요.
프로젝트가 면제 대상이라고 판단되면 프로젝트의 Info.plist에서 ITSAppUsesNonExemptEncryption 키를 False로 설정하세요. 자세한 내용은 Application Manifests를 참고하세요.
A: mobile provisioning profile을 생성할 때 Xcode 프로젝트에서 사용한 bundle identifier와 Defold 프로젝트에서 사용하는 bundle identifier가 같은지 확인하세요.
A: 빌드된 앱의 entitlements 검사에서:
codesign -d --ent :- /path/to/the.app
A: 프로파일의 entitlements 검사에서:
security cms -D -i /path/to/iOSTeamProfile.mobileprovision