iOS - kuimoani/defold GitHub Wiki

Developing games for iOS

이 맀뉴얼은 Defoldμ—μ„œ iOS μž₯치의 μ•±κ³Ό κ²Œμž„μ„ κ°œλ°œν•˜λŠ” 방법을 μ„€λͺ…ν•©λ‹ˆλ‹€.

iOS κ°œλ°œμ€ κ°œλ°œμ€‘μ—λ„ iOS 기기에 μ•±μ΄λ‚˜ κ²Œμž„μ„ 올릴 수 μžˆλ„λ‘ 개발자 등둝을 ν•΄μ•Ό ν•œλ‹€λŠ” μ μ—μ„œ Android 개발과 λ‹€λ¦…λ‹ˆλ‹€. 또 iOSλŠ” νœ΄λŒ€ν°μ΄λ‚˜ 타블렛에 μžˆλŠ” λͺ¨λ“  앱이 Apple이 λ°œν–‰ν•œ μΈμ¦μ„œ(certificate)와 ν”„λ‘œλΉ„μ Έλ‹ ν”„λ‘œνŒŒμΌ(provisioning profile)에 μ„œλͺ…ν•΄μ•Ό ν•œλ‹€κ³  μš”κ΅¬ν•©λ‹ˆλ‹€.

Apple’s code signing process

iOS μ•±κ³Ό κ΄€λ ¨λœ λ³΄μ•ˆμ€ μ—¬λŸ¬κ°€μ§€ μš”μ†Œλ‘œ κ΅¬μ„±λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. ν•„μš”ν•œ 도ꡬ에 μ•‘μ„ΈμŠ€ ν•˜λ €λ©΄ μš°μ„  Apple’s iOS Developer Program에 κ°€μž…ν•΄μ•Ό ν•©λ‹ˆλ‹€. 등둝 ν›„μ—λŠ” Apple’s Developer Member Center 둜 μ΄λ™ν•˜κΈ° λ°”λžλ‹ˆλ‹€.

Apple Member Center

Certificates, Identifiers & Profiles μ„Ήμ…˜μ€ ν•„μš”ν•œ λͺ¨λ“  도ꡬλ₯Ό ν¬ν•¨ν•˜κ³  있으며 μ—¬κΈ°μ—μ„œ 생성, μ‚­μ œ, μˆ˜μ •μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€.

Certificates

Apple은 당신을 개발자둜 μ‹λ³„ν•˜λŠ” μ•”ν˜Έν™”λœ μΈμ¦μ„œλ₯Ό λ°œν–‰ν•©λ‹ˆλ‹€. 당신은 development λ˜λŠ” production μΈμ¦μ„œλ₯Ό 생성할 수 μžˆμŠ΅λ‹ˆλ‹€. Developer μΈμ¦μ„œλŠ” μƒŒλ“œλ°•μŠ€ ν…ŒμŠ€νŠΈ ν™˜κ²½μ—μ„œ μΈμ•±κ²°μ œ(in-app purchase) 같은 νŠΉμ •ν•œ κΈ°λŠ₯을 ν…ŒμŠ€νŠΈ ν•  수 있게 ν•΄ μ€λ‹ˆλ‹€. Production μΈμ¦μ„œλŠ” App Store에 μ™„μ„±λœ 앱을 μ—…λ‘œλ“œ ν•˜κΈ° μœ„ν•΄ μ„œλͺ…ν•˜λŠ”λ° μ‚¬μš©λ©λ‹ˆλ‹€. ν…ŒμŠ€νŠΈλ₯Ό ν•˜λ €λ©΄ λ‹Ήμ‹ μ˜ 기기에 앱을 μ„€μΉ˜ν•˜κΈ° 전에 μΈμ¦μ„œ λΆ€ν„° μ„œλͺ…ν•΄μ•Ό ν•©λ‹ˆλ‹€.

Identifiers

λ‹€μ–‘ν•œ μš©λ„μ˜ μ‹λ³„μž. μ—¬λŸ¬ μ•±μ—μ„œ μ‚¬μš©ν•  수 μžˆλŠ” μ™€μΌλ“œμΉ΄λ“œ μ‹λ³„μž(예λ₯Ό λ“€μ–΄ "some.prefix.*")λ₯Ό 등둝할 수 μžˆμŠ΅λ‹ˆλ‹€. App IDλŠ” Passbook integrationκ³Ό Game Center λ“±μ˜ ν™œμ„±ν™” 여뢀와 같은 Application Service 정보λ₯Ό 포함할 수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ App IDλŠ” μ™€μΌλ“œμΉ΄λ“œ μ‹λ³„μžκ°€ 될 수 μ—†μŠ΅λ‹ˆλ‹€. Application Servicesκ°€ μž‘λ™ν•˜λ €λ©΄ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ "bundle identifier" κ°€ App ID μ‹λ³„μžμ™€ μΌμΉ˜ν•΄μ•Όλ§Œ ν•©λ‹ˆλ‹€.

Devices

각 개발 μž₯μΉ˜λŠ” UDID (Unique Device IDentifier)λ₯Ό 등둝해야 ν•©λ‹ˆλ‹€. μž₯μΉ˜μ—μ„œ UDIDλ₯Ό μ•Œμ•„λ‚΄λŠ” 방법은 μ•„λž˜λ₯Ό μ°Έκ³  λ°”λžλ‹ˆλ‹€.

Provisioning Profiles

ν”„λ‘œλΉ„μ Έλ‹ ν”„λ‘œνŒŒμΌμ€ νŠΉμ • μž₯μΉ˜μ™€ App IDλ₯Ό μ‚¬μš©ν•œ μΈμ¦μ„œμ™€ κ΄€λ ¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” 기본적으둜 μ–΄λ–€ κ°œλ°œμžκ°€ μ–΄λ–€ μž₯μΉ˜μ—μ„œ μ–΄λ–€ 앱을 μ‚¬μš©ν•  수 μžˆλŠ”μ§€λ₯Ό μ•Œλ €μ€λ‹ˆλ‹€.

Defoldμ—μ„œ κ²Œμž„μ΄λ‚˜ 앱에 μ„œλͺ…ν•  λ•Œμ—λŠ” μœ νš¨ν•œ μΈμ¦μ„œμ™€ μœ νš¨ν•œ ν”„λ‘œλΉ„μ Έλ‹ ν”„λ‘œνŒŒμΌμ΄ ν•„μš”ν•©λ‹ˆλ‹€.

Member Center ν™ˆνŽ˜μ΄μ§€μ—μ„œ ν•  수 μžˆλŠ” 일 쀑에 μΌλΆ€λŠ” XCode κ°œλ°œν™˜κ²½ λ‚΄μ—μ„œλ„ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Device UDID

iOS μž₯치의 UDIDλŠ” μ™€μ΄νŒŒμ΄λ‚˜ μΌ€μ΄λΈ”λ‘œ 컴퓨터에 μ—°κ²°ν•΄μ„œ μ•Œμ•„λ‚Ό 수 μžˆμŠ΅λ‹ˆλ‹€. iTunes λ₯Ό μ—΄μ–΄μ„œ μž₯치 μ•„μ΄μ½˜μ„ ν΄λ¦­ν•˜κ³  λ‹Ήμ‹ μ˜ μž₯치λ₯Ό μ„ νƒν•˜μ„Έμš”.

iTunes devices

Summary νŽ˜μ΄μ§€μ—μ„œ Serial Number λ₯Ό μ°ΎμŠ΅λ‹ˆλ‹€.

Device UDID step 1

Serial Numberλ₯Ό ν΄λ¦­ν•΄μ„œ 이 ν•„λ“œλ₯Ό UDID둜 λ³€κ²½ν•©λ‹ˆλ‹€. 반볡적으둜 ν΄λ¦­ν•˜λ©΄ 이 μž₯μΉ˜μ— λŒ€ν•œ μ—¬λŸ¬ 정보듀이 ν‘œμ‹œλ˜λ―€λ‘œ UDIDκ°€ λ‚˜μ˜¬ λ•Œ κΉŒμ§€ 계속 클릭해도 λ©λ‹ˆλ‹€. κΈ΄ UDID λ¬Έμžμ—΄μ„ 마우슀 였λ₯Έμͺ½ ν΄λ¦­ν•΄μ„œ Copy λ₯Ό 눌러 μ‹λ³„μžλ₯Ό ν΄λ¦½λ³΄λ“œλ‘œ λ³΅μ‚¬ν•©λ‹ˆλ‹€. 그러면 Apple’s Developer Member Centerμ—μ„œ μž₯치λ₯Ό 등둝할 λ•Œ UDID ν•„λ“œμ— μ‰½κ²Œ λΆ™μ—¬λ„£κΈ° ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Device UDID step 2

Signing the Defold development app

development app은 μ™€μ΄νŒŒμ΄λ₯Ό 톡해 컨텐츠λ₯Ό μ„€μΉ˜ν•  수 μžˆλŠ” μ•„μ£Ό νŽΈλ¦¬ν•œ λ²„μ „μž…λ‹ˆλ‹€. μž₯μΉ˜μ— development app을 μ„€μΉ˜ν•˜κ³  앱을 μ‹œμž‘ν•œ λ‹€μŒ μ—λ””ν„°μ—μ„œ ν•΄λ‹Ή μž₯치λ₯Ό λΉŒλ“œ λŒ€μƒμœΌλ‘œ μ„ νƒν•©λ‹ˆλ‹€.

ν˜„μž¬, μ΅œμ†Œν•œ νŒ€μ› ν•œ λͺ…은 OS Xλ₯Ό μ‹€ν–‰ν•˜κ³  λ‹€λ₯Έ νŒ€ 멀버λ₯Ό μœ„ν•΄ development appλ₯Ό μ„œλͺ…ν•˜λ €κ³  Apple Developer에 등둝할 ν•„μš”κ°€ μžˆμŠ΅λ‹ˆλ‹€. μš°λ¦¬λŠ” 이 μ‚¬λžŒμ„ μ„œλͺ…인(signer)이라고 λΆ€λ₯΄λ„둝 ν•˜κ² μŠ΅λ‹ˆλ‹€.

  • μ„œλͺ…μΈμ˜ 컴퓨터에 μ„€μΉ˜λœ μΈμ¦μ„œκ°€ μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.
  • μ„œλͺ…μΈμ˜ 컴퓨터에 λͺ¨λ°”일 ν”„λ‘œλΉ„μ Έλ‹ ν”„λ‘œνŒŒμΌμ΄ μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.
  • μ„œλͺ…인은 λ‹€λ₯Έ λ©€λ²„λ“€λ‘œλΆ€ν„° UDIDλ₯Ό μˆ˜μ§‘ν•˜κ³  λͺ¨λ°”일 ν”„λ‘œλΉ„μ Έλ‹ ν”„λ‘œνŒŒμΌμ— μΆ”κ°€ν•΄μ•Ό ν•©λ‹ˆλ‹€.

μ„œλͺ…λœ development app을 Defold Dashboard에 μ—…λ‘œλ“œ ν•˜λ €λ©΄, μ•„λž˜ 단계가 ν•„μš”ν•©λ‹ˆλ‹€.

  1. μ—λ””ν„°μ—μ„œ, Project > Sign App…​ 선택
  2. λ‹Ήμ‹ μ˜ code signing identity 선택
  3. λ‹Ήμ‹ μ˜ mobile provisioning 파일 μ°ΎκΈ°
  4. Sign and upload λ²„νŠΌ λˆ„λ₯΄κΈ°

Signing the app

Defold dev app은 Dashboard의 ν”„λ‘œμ νŠΈ νŽ˜μ΄μ§€λ‘œ μ—…λ‘œλ“œ λ©λ‹ˆλ‹€. 각 ν”„λ‘œμ νŠΈ λ©€λ²„λŠ” λ‹€μŒ μž‘μ—…μ„ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  1. iOS μž₯μΉ˜μ—μ„œ Dashboardλ₯Ό 탐색
  2. ν”„λ‘œμ νŠΈμ˜ λͺ©λ‘μ—μ„œ ν”„λ‘œμ νŠΈ νŽ˜μ΄μ§€λ₯Ό μ—Ό
  3. Members μ„Ήμ…˜ μ•„λž˜μ— μžˆλŠ” Install the Defold App 링크λ₯Ό 클릭함

이 λΉ„λ””μ˜€λŠ” 전체 ν”„λ‘œμ„ΈμŠ€λ₯Ό λ³΄μ—¬μ€λ‹ˆλ‹€. https://www.youtube.com/watch?v=T_igYdHubqA

Launching the game

iOS μž₯μΉ˜μ—μ„œ κ²Œμž„μ„ μ‹€ν–‰ν•˜λ €λ©΄ Defold dev appκ³Ό 에디터가 같은 μ™€μ΄νŒŒμ΄ λ„€νŠΈμ›Œν¬μƒμ—μ„œ μ—°κ²° κ°€λŠ₯ν•΄μ•Ό ν•©λ‹ˆλ‹€.

  1. 에디터가 싀행쀑인지 ν™•μΈν•˜κΈ°
  2. iOS μž₯μΉ˜μ—μ„œ Defold dev app μ‹€ν–‰ν•˜κΈ°
  3. μ—λ””ν„°μ—μ„œ Project > Targets 에 μžˆλŠ” λ‹Ήμ‹ μ˜ μž₯치 선택
  4. κ²Œμž„μ„ μ‹€ν–‰ν•˜κΈ° μœ„ν•΄ Project > Build And Launch μ„ νƒν•˜κΈ°. κ²Œμž„ 컨텐츠가 λ„€νŠΈμ›Œν¬λ₯Ό ν†΅ν•΄μ„œ μž₯치둜 슀트림 λ˜λ―€λ‘œ κ²Œμž„μ΄ μ‹œμž‘λ˜λŠ”λ° μ‹œκ°„μ΄ 걸릴 수 있음.
  5. κ²Œμž„μ΄ μ‹€ν–‰λ˜λŠ” λ™μ•ˆ, ν‰μ†Œμ²˜λŸΌ ν•« λ¦¬λ‘œλ“œ(hot-reload)도 ν•  수 있음

Creating an iOS application bundle

μ—λ””ν„°μ—μ„œ κ²Œμž„μš© 독립 μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ λ²ˆλ“€(stand alone application bundle)도 μ‰½κ²Œ 생성할 수 μžˆμŠ΅λ‹ˆλ‹€. λ©”λ‰΄μ—μ„œ Project > Bundle…​ > iOS Application…​ λ₯Ό μ„ νƒν•˜κΈ°λ§Œ ν•˜λ©΄ λ©λ‹ˆλ‹€.

Signing iOS bundle

λ‹Ήμ‹ μ˜ code signing identityλ₯Ό μ„ νƒν•˜κ³  λ‹Ήμ‹ μ˜ mobile provisioning νŒŒμΌμ„ νƒμƒ‰ν•©λ‹ˆλ‹€. Package λ²„νŠΌμ„ λˆ„λ₯΄λ©΄ μ»΄ν“¨ν„°μ—μ„œ λ²ˆλ“€μ΄ 생성될 μœ„μΉ˜λ₯Ό μ§€μ •ν•˜λΌλŠ” 창이 λœΉλ‹ˆλ‹€.

ipa iOS application bundle

μ—λ””ν„°λŠ” iOS μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ λ²ˆλ“€λ‘œ .ipa νŒŒμΌμ„ μƒμ„±ν•©λ‹ˆλ‹€. 이 νŒŒμΌμ€ iTunes둜 λ“œλž˜κ·Έ-μ•€-λ“œλ‘­ ν•΄μ„œ λ‹€μŒ 동기화 쀑에 λ‹Ήμ‹ μ˜ μž₯μΉ˜μ— μ„€μΉ˜ν•˜κ²Œ λ©λ‹ˆλ‹€. "game.project" ν”„λ‘œμ νŠΈ μ„€μ • νŒŒμΌμ—μ„œ μ‹€ν–‰ 슀크린 μ΄λ―Έμ§€λ‚˜ μ•±μ—μ„œ μ‚¬μš©ν•  μ•„μ΄μ½˜ 등을 μ§€μ •ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

Troubleshooting

μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λ‹€μš΄λ‘œλ“œ ν•  수 없을 경우

μ„œλͺ…인(signer)이 앱을 μ„œλͺ…ν•˜λŠ”λ° μ‚¬μš©λ˜λŠ” mobile provisioning에 UDIDλ₯Ό μ œλŒ€λ‘œ μΆ”κ°€ν–ˆλŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€.

λ‚΄ μž₯μΉ˜κ°€ Targets 메뉴에 λ‚˜νƒ€λ‚˜μ§€ μ•Šμ„ 경우

λ‹Ήμ‹ μ˜ μž₯μΉ˜κ°€ 컴퓨터와 λ™μΌν•œ μ™€μ΄νŒŒμ΄ λ„€νŠΈμ›Œν¬μ— μ—°κ²°λ˜μ–΄ μžˆλŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€.

버전이 λ§žμ§€ μ•ŠλŠ”λ‹€(mis-matching versions)λŠ” λ©”μ„Έμ§€λ‘œ κ²Œμž„μ΄ μ‹œμž‘λ˜μ§€ μ•ŠλŠ” 경우

이 λ¬Έμ œλŠ” 에디터λ₯Ό μ΅œμ‹  λ²„μ „μœΌλ‘œ μ—…κ·Έλ ˆμ΄λ“œ ν–ˆμ„ λ•Œ λ°œμƒν•©λ‹ˆλ‹€. Sign and Uploadλ₯Ό λ‹€μ‹œ ν•΄μ„œ ν˜„μž¬ μ—”μ§„ λ²„μ „μ—μ„œ μƒˆ dev app을 생성해야 ν•©λ‹ˆλ‹€. λ‹Ήμ‹ μ˜ 기기의 dashboardμ—μ„œ λ‹€μ‹œ 앱을 λ‹€μš΄λ‘œλ“œ ν•˜μ„Έμš”.