Manuals
Manuals




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

Пакування гри для iOS доступне лише у версії редактора Defold для Mac.

iOS вимагає, щоб будь-який застосунок, який ви збираєте й хочете запускати на телефоні чи планшеті, обов’язково був підписаний сертифікатом і профілем підготовки (provisioning profile), виданими Apple. Цей посібник пояснює кроки пакування гри для iOS. Під час розробки часто зручніше запускати гру через застосунок для розробки, оскільки він дає змогу виконувати гаряче перезавантаження вмісту й коду безпосередньо на пристрої.

Процес підписування коду Apple

Захист застосунків iOS складається з кількох компонентів. Щоб отримати доступ до потрібних інструментів, зареєструйтеся в програмі Apple iOS Developer Program. Після реєстрації перейдіть до центру учасників програми розробників Apple.

Центр учасників Apple

Розділ Certificates, Identifiers & Profiles містить усі потрібні інструменти. Тут можна створювати, видаляти й редагувати:

Certificates
Криптографічні сертифікати, видані Apple, які ідентифікують вас як розробника. Можна створювати сертифікати для розробки або для випуску. Сертифікати розробника дають змогу тестувати певні можливості, наприклад механізм покупок у застосунку, у тестовому середовищі пісочниці. Сертифікати для випуску використовуються для підписування остаточного застосунку, який буде завантажено в App Store. Перш ніж установити застосунки на свій пристрій для тестування, потрібно підписати їх сертифікатом.
Identifiers
Ідентифікатори різного призначення. Можна зареєструвати ідентифікатори із символом підстановки (наприклад, some.prefix.*), які можна використовувати для кількох застосунків. App ID можуть містити інформацію про сервіси застосунку, наприклад про ввімкнену інтеграцію з Passbook, Game Center тощо. Такі App ID не можуть містити символ підстановки. Щоб сервіси застосунку працювали, ідентифікатор пакета вашого застосунку має збігатися з ідентифікатором App ID.
Devices
Кожен пристрій для розробки потрібно зареєструвати за його UDID (Unique Device IDentifier — унікальний ідентифікатор пристрою, див. нижче).
Provisioning Profiles
Профілі підготовки пов’язують сертифікати з App ID і списком пристроїв. Вони визначають, який застосунок якого розробника дозволено встановлювати на які пристрої.

Для підписування ігор і застосунків у Defold потрібні чинний сертифікат і чинний профіль підготовки.

Деякі дії, доступні на головній сторінці Member Center, також можна виконати в середовищі розробки Xcode, якщо воно встановлене.

Ідентифікатор пристрою (UDID)
UDID пристрою iOS можна знайти, під’єднавши пристрій до комп’ютера через Wi-Fi або кабель. Відкрийте Xcode і виберіть Window ▸ Devices and Simulators. Після вибору пристрою відобразяться його серійний номер та ідентифікатор.

Пристрої в Xcode

Якщо Xcode не встановлено, ідентифікатор можна знайти в iTunes. Натисніть піктограму пристроїв і виберіть свій пристрій.

Пристрої в iTunes

  1. На сторінці Summary знайдіть Serial Number.
  2. Натисніть Serial Number один раз, щоб поле змінилося на UDID. Повторні натискання показуватимуть різні відомості про пристрій. Продовжуйте натискати, доки не з’явиться UDID.
  3. Натисніть правою кнопкою миші довгий рядок UDID і виберіть Copy, щоб скопіювати ідентифікатор у буфер обміну. Так ви зможете легко вставити його в поле UDID під час реєстрації пристрою в центрі учасників програми розробників Apple.

Розробка з безкоштовним обліковим записом розробника Apple

Починаючи з Xcode 7, будь-хто може встановити Xcode і безкоштовно розробляти застосунки на пристрої. Реєструватися в iOS Developer Program не потрібно. Натомість Xcode автоматично видасть вам сертифікат розробника (чинний протягом 1 року) і профіль підготовки для вашого застосунку (чинний протягом одного тижня) на конкретному пристрої.

  1. Під’єднайте пристрій.
  2. Установіть Xcode.
  3. Додайте новий обліковий запис у Xcode й увійдіть за допомогою свого Apple ID.
  4. Створіть новий проєкт. Підійде найпростіший шаблон Single View App.
  5. Виберіть свою команду Team (створену для вас автоматично) і задайте ідентифікатор пакета застосунку.

Запишіть ідентифікатор пакета, оскільки в проєкті Defold потрібно використовувати той самий ідентифікатор.

  1. Переконайтеся, що Xcode створив Provisioning Profile і Signing Certificate для застосунку.

  2. Зберіть застосунок на пристрої. Першого разу Xcode попросить увімкнути режим розробника й підготує пристрій для роботи з налагоджувачем. Це може зайняти деякий час.
  3. Переконавшись, що застосунок працює, знайдіть його на диску. Шлях до збірки можна побачити у звіті про збирання в Report Navigator.

  4. Знайдіть застосунок, натисніть його правою кнопкою миші й виберіть Show Package Contents.

  5. Скопіюйте файл embedded.mobileprovision у зручне для вас місце на диску.

Цей файл профілю підготовки разом з ідентифікатором підписування коду можна використовувати для підписування застосунків у Defold протягом одного тижня.

Коли термін дії профілю підготовки закінчиться, потрібно знову зібрати застосунок у Xcode й отримати новий тимчасовий файл профілю підготовки, як описано вище.

Створення пакета застосунку iOS

Маючи ідентифікатор підписування коду та профіль підготовки, ви можете створити в редакторі окремий пакет застосунку для своєї гри. Просто виберіть у меню Project ▸ Bundle... ▸ iOS Application....

Підписування пакета iOS

Виберіть ідентифікатор підписування коду та вкажіть файл профілю підготовки для мобільного пристрою. Виберіть архітектуру пристрою arm64-ios і, за потреби, архітектуру симулятора x86_64-ios, а також варіант збірки (Debug або Release). За бажанням можна зняти прапорець Sign application, щоб пропустити підписування й виконати його вручну пізніше.

Ви обов’язково маєте зняти прапорець Sign application, коли тестуєте гру в симуляторі iOS. Інакше застосунок можна буде встановити, але він не запуститься.

Натисніть Create Bundle, після чого вам буде запропоновано вказати місце на комп’ютері, де буде створено пакет.

Пакет застосунку iOS у форматі ipa

Піктограму застосунку, розкадрування екрана запуску (storyboard) та інші параметри задають у файлі налаштувань проєкту game.project у розділі iOS.

Власний Info.plist і виявлення локальних цільових пристроїв

Вбудований файл Info.plist для iOS містить сервіс Bonjour та опис використання локальної мережі, потрібні для автоматичного виявлення редактором цільових пристроїв у збірках, які не призначені для випуску. Власний Info.plist замінює цей вбудований базовий маніфест. Якщо для налагоджувальної збірки використовується власний маніфест і вам потрібні виявлення цільових пристроїв, профілювання, гаряче перезавантаження або потокове передавання журналу через локальну мережу, додайте такі записи:

{{^variant_release}}
<key>NSBonjourServices</key>
<array>
    <string>_defold._tcp</string>
</array>
<key>NSLocalNetworkUsageDescription</key>
<string>Discover Defold targets on the local network.</string>
{{/variant_release}}

Умова Mustache виключає записи для виявлення з пакетів випуску. iOS показує користувачеві рядок з описом використання; його можна змінити або локалізувати. Видаляйте умову лише тоді, коли сам застосунок випуску використовує той самий сервіс Bonjour і функції локальної мережі.

Варіанти збірки

Під час пакування гри потрібно вибрати, який тип рушія ви хочете використовувати. Є три основні варіанти:

  • Debug
  • Release
  • Headless

Ці різновиди також називають Build variants

Якщо вибрати Project ▸ Build, ви завжди отримаєте налагоджувальну версію.

Debug

Цей тип виконуваної програми зазвичай використовують під час розробки гри, оскільки він містить кілька корисних функцій налагодження:

  • Профайлер — збирає показники продуктивності та використання ресурсів. Дізнайтеся, як ним користуватися, у посібнику з профілювання.
  • Ведення журналу — коли його ввімкнено, рушій записує системну інформацію, попередження та помилки. Рушій також виводить повідомлення функції Lua print() і нативних розширень, які використовують dmLogInfo(), dmLogError() тощо. Дізнайтеся, як читати ці журнали, у посібнику з журналів гри та системи.
  • Гаряче перезавантаження — потужна функція, що дає розробнику змогу перезавантажувати ресурси під час роботи гри. Дізнайтеся, як нею користуватися, у посібнику з гарячого перезавантаження.
  • Сервіси рушія — до налагоджувальної версії гри можна під’єднатися через різні відкриті порти TCP та сервіси й взаємодіяти з нею. До цих сервісів належать згадані вище гаряче перезавантаження, віддалений доступ до журналу й профайлер, а також інші сервіси для віддаленої взаємодії з рушієм. Докладніше про сервіси рушія читайте в документації для розробників.

Release

У цьому варіанті функції налагодження вимкнено. Його слід вибирати, коли гра готова до випуску в магазині застосунків або до поширення серед гравців іншим способом. Випускати гру з увімкненими функціями налагодження не рекомендовано з кількох причин:

  • Функції налагодження дещо збільшують розмір двійкового файлу, а розмір двійкового файлу випущеної гри рекомендовано зводити до мінімуму.
  • Функції налагодження також потребують певного часу процесора. Це може впливати на продуктивність гри, якщо користувач має малопотужний пристрій. На мобільних телефонах додаткове навантаження на процесор також спричиняє нагрівання й швидше розряджання батареї.
  • Функції налагодження можуть розкривати інформацію про гру, не призначену для гравців, що створює ризики для безпеки або може сприяти використанню читів чи шахрайству.

Headless

Ця виконувана програма працює без графіки та звуку. Тож ви можете запускати тести модулів або димові тести гри на сервері CI чи навіть використовувати її як ігровий сервер у хмарі.

Установлення та запуск пакета на під’єднаному iPhone

Щоб установити й запустити зібраний пакет, скористайтеся прапорцями Install on connected device і Launch installed app у діалоговому вікні Bundle редактора:

Установлення та запуск пакета iOS

Для роботи цієї функції потрібно встановити засіб командного рядка ios-deploy. Найпростіше встановити його за допомогою Homebrew:

$ brew install ios-deploy

Якщо редактор не може визначити шлях установлення засобу ios-deploy, укажіть його в налаштуваннях редактора.

Створення розкадрування

Файл розкадрування створюють за допомогою Xcode. Запустіть Xcode і створіть новий проєкт. Виберіть iOS і Single View App:

Створення проєкту

Натисніть Next і перейдіть до налаштування проєкту. Введіть назву продукту в полі Product Name:

Налаштування проєкту

Натисніть Create, щоб завершити процес. Проєкт створено, і тепер можна перейти до створення розкадрування:

Вигляд проєкту

Перетягніть зображення в проєкт, щоб імпортувати його. Потім виберіть Assets.xcassets і перетягніть зображення в Assets.xcassets:

Додавання зображення

Відкрийте LaunchScreen.storyboard і натисніть кнопку з плюсом (+). Введіть imageview у діалоговому вікні, щоб знайти компонент ImageView.

Додавання елемента перегляду зображення

Перетягніть компонент Image View на розкадрування:

Додавання до розкадрування

У розкривному списку Image виберіть зображення, яке ви раніше додали до Assets.xcassets:

Розташуйте зображення та внесіть інші потрібні зміни, наприклад додайте Label або інший елемент інтерфейсу. Коли завершите, виберіть активну схему Any iOS Device (arm64) (або Generic iOS Device) і виберіть Product ▸ Build. Defold підтримує iOS 15.0 і новіші версії на 64-бітних пристроях, тому мінімальна версія iOS для розгортання має бути 15.0 або новішою. Дочекайтеся завершення збирання.

Якщо ви використовуєте зображення в розкадруванні, вони не потраплять до LaunchScreen.storyboardc автоматично. Скористайтеся полем Bundle Resources у game.project, щоб включити ресурси. Наприклад, створіть у проєкті 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 підготував відеоурок із демонстрацією цього процесу.

Маючи файл розкадрування, ви можете вказати посилання на нього в game.project.

Створення каталогу ресурсів піктограм

Apple рекомендує використовувати каталог ресурсів для керування піктограмами застосунку. Фактично це єдиний спосіб надати піктограму для сторінки застосунку в App Store. Каталог ресурсів створюють так само, як і розкадрування, за допомогою Xcode. Запустіть Xcode і створіть новий проєкт. Виберіть iOS і Single View App:

Створення проєкту

Натисніть Next і перейдіть до налаштування проєкту. Введіть назву продукту в полі Product Name:

Налаштування проєкту

Натисніть Create, щоб завершити процес. Проєкт створено, і тепер можна перейти до створення каталогу ресурсів:

Вигляд проєкту

Перетягніть зображення в порожні комірки, що відповідають різним підтримуваним розмірам піктограм:

Додавання піктограм

Не додавайте піктограм для Notifications, Settings або Spotlight.

Коли завершите, виберіть активну схему 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

Маючи файл каталогу ресурсів, ви можете вказати посилання на нього та піктограми в game.project:

Додавання піктограми та каталогу ресурсів до game.project

На піктограму App Store не потрібно посилатися з game.project. Вона автоматично видобувається з файлу Assets.car під час завантаження в iTunes Connect.

Установлення пакета застосунку iOS

Редактор записує файл .ipa, який є пакетом застосунку iOS. Щоб установити файл на пристрій, можна скористатися одним із таких інструментів:

  • Xcode через вікно Devices and Simulators
  • Засіб командного рядка ios-deploy
  • Apple Configurator 2 з macOS App Store
  • iTunes

Також можна використовувати засіб командного рядка xcrun simctl для роботи із симуляторами iOS, доступними через Xcode:

# show a list of available devices
xcrun simctl list

# boot an iPhone X simulator
xcrun simctl boot "iPhone X"

# install your.app to a booted simulator
xcrun simctl install booted your.app

# launch the simulator
open /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app

Маніфест конфіденційності Apple

Маніфест конфіденційності — це список властивостей, у якому зазначено типи даних, що їх збирає ваш застосунок або сторонній SDK, а також API, використання яких потребує обґрунтування. Для кожного типу зібраних даних і кожної категорії таких API застосунок або сторонній SDK має вказати причини у файлі маніфесту конфіденційності, включеному до його пакета.

Defold надає стандартний маніфест конфіденційності через поле Privacy Manifest у файлі game.project. Під час створення пакета застосунку цей маніфест буде об’єднано з усіма маніфестами конфіденційності залежностей проєкту та включено до пакета застосунку.

Докладніше про маніфести конфіденційності читайте в офіційній документації Apple.

Інформація про відповідність вимогам експортного контролю

Коли ви подаєте гру до App Store, вас попросять надати інформацію про відповідність вимогам експортного контролю щодо використання шифрування у грі. Apple пояснює, чому це потрібно:

«Коли ви подаєте застосунок до TestFlight або App Store, ви завантажуєте його на сервер у Сполучених Штатах. Якщо ви розповсюджуєте застосунок за межами США або Канади, на нього поширюється експортне законодавство США незалежно від місця реєстрації вашої юридичної особи. Якщо застосунок використовує шифрування, звертається до нього, містить, реалізує або включає його, це вважається експортом програмного забезпечення для шифрування. Отже, на застосунок поширюються вимоги експортного контролю США, а також вимоги імпортного контролю країн, у яких ви розповсюджуєте застосунок».

Ігровий рушій Defold використовує шифрування для таких цілей:

  • Виконання запитів через захищені канали (тобто HTTPS і SSL)
  • Захист авторських прав на код Lua (щоб запобігти копіюванню)

Ці способи використання шифрування в рушії Defold звільнені від вимог щодо документів експортного контролю відповідно до законодавства Сполучених Штатів і Європейського Союзу. Більшість проєктів Defold також матимуть таке звільнення, але додавання інших криптографічних методів може змінити цей статус. Ви відповідаєте за те, щоб ваш проєкт відповідав вимогам цих законів і правилам App Store. Докладніше див. в огляді вимог експортного контролю Apple.

Якщо ви вважаєте, що ваш проєкт має таке звільнення, установіть для ключа ITSAppUsesNonExemptEncryption значення False у файлі Info.plist проєкту. Докладніше див. в посібнику Маніфести застосунків.

Поширені запитання

П: Не вдається встановити гру Defold за допомогою безкоштовного облікового запису Apple Developer.

В: Переконайтеся, що ідентифікатор пакета у вашому проєкті Defold збігається з ідентифікатором у проєкті Xcode, який ви використовували для створення мобільного профілю підготовки.

П: Як перевірити права доступу пакета застосунку?

В: Із розділу «Перевірка прав доступу зібраного застосунку»:

codesign -d --ent :- /path/to/the.app

П: Як перевірити права доступу профілю підготовки?

В: Із розділу «Перевірка прав доступу профілю»:

security cms -D -i /path/to/iOSTeamProfile.mobileprovision