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 доступен только в версии редактора Defold для Mac.
iOS требует, чтобы любое приложение, которое вы собираете и хотите запускать на телефоне или планшете, обязательно было подписано сертификатом и provisioning profile, выданными Apple. В этом руководстве описаны шаги, необходимые для создания iOS-бандла вашей игры. Во время разработки часто предпочтительнее запускать игру через development app, поскольку это позволяет использовать hot reload контента и кода прямо на устройстве.
Безопасность, связанная с iOS-приложениями, состоит из нескольких компонентов. Доступ к необходимым инструментам можно получить, зарегистрировавшись в Apple iOS Developer Program. После регистрации перейдите в Apple Developer Member Center.

Раздел Certificates, Identifiers & Profiles содержит все инструменты, которые вам нужны. Здесь можно создавать, удалять и редактировать:
some.prefix.*), которые могут использоваться несколькими приложениями. App ID могут содержать информацию о сервисах приложения, например о включенной интеграции с Passbook, Game Center и т.д. Такие App ID не могут быть wildcard-идентификаторами. Чтобы сервисы приложения работали, bundle identifier вашего приложения должен совпадать с идентификатором App ID.При подписи игр и приложений в Defold вам нужны действительный сертификат и действительный provisioning profile.
Часть действий, которые доступны на странице Member Center, можно выполнять и из среды разработки Xcode, если она у вас установлена.

Если Xcode не установлен, идентификатор можно найти в iTunes. Нажмите на значок устройств и выберите свое устройство.

Начиная с Xcode 7 любой может установить Xcode и бесплатно разрабатывать под реальные устройства. Регистрироваться в iOS Developer Program не обязательно. Вместо этого Xcode автоматически выдаст вам сертификат разработчика (действует 1 год) и provisioning profile для вашего приложения (действует 1 неделю) на конкретном устройстве.
Запишите bundle identifier, так как в проекте Defold нужно использовать точно такой же bundle identifier.
Убедитесь, что Xcode создал для приложения Provisioning Profile и Signing Certificate.

Когда вы убедитесь, что приложение работает, найдите его на диске. Путь к сборке можно увидеть в Build report в “Report Navigator”.

Найдите приложение, щелкните по нему правой кнопкой мыши и выберите Show Package Contents.


Этот provisioning-файл можно использовать вместе с вашей code signing identity для подписи приложений в Defold в течение одной недели.
Когда срок действия provisioning profile истечет, нужно снова собрать приложение в Xcode и получить новый временный provisioning-файл, как описано выше.
Когда у вас есть code signing identity и provisioning profile, можно создавать самостоятельный application bundle для игры из редактора. Просто выберите в меню Project ▸ Bundle... ▸ iOS Application....

Выберите свою code signing identity и укажите mobile provisioning file. Также выберите архитектуры (32-bit, 64-bit и iOS simulator), для которых нужно создать бандл, а также вариант сборки (Debug или Release). При необходимости можно снять флажок Sign application, чтобы пропустить процесс подписи и выполнить его вручную позже.
При тестировании игры на iOS simulator флажок Sign application обязательно нужно снять. Приложение установится, но не запустится, если оставить подпись включенной.
Нажмите Create Bundle, после чего будет предложено выбрать место на компьютере, куда будет сохранен бандл.

Иконку приложения, launch screen storyboard и другие параметры вы задаете в файле настроек проекта game.project в разделе iOS.
Когда вы собираете игру, нужно выбрать тип движка, который будет использоваться. Есть три основных варианта:
Эти разные версии также называются Build variants
Если вы выбираете Project ▸ Build, вы всегда получите debug-версию.
Этот тип исполняемого файла обычно используется во время разработки игры, поскольку в него включены полезные возможности отладки:
print() и из логирования нативных расширений через dmLogInfo(), dmLogError() и так далее. Как читать эти логи, описано в руководстве по логам игры и системы.В этом варианте функции отладки отключены. Этот вариант следует выбирать, когда игра готова к публикации в магазине приложений или к распространению среди игроков другим способом. Выпускать игру с включёнными средствами отладки не рекомендуется по нескольким причинам:
Этот исполняемый файл запускается без графики и звука. Это означает, что вы можете выполнять unit/smoke tests игры на CI-сервере или даже использовать его как игровой сервер в облаке.
Можно установить и запустить собранный бандл, используя флажки редактора “Install on connected device” и “Launch installed app” в диалоге Bundle:

Для работы этой функции должен быть установлен консольный инструмент 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:

Выберите изображение, которое вы ранее добавили в Assets.xcassets, в выпадающем списке Image:

Разместите изображение и внесите любые другие нужные изменения, например добавьте Label или другой UI-элемент. Когда все будет готово, установите активную схему “Build -> Any iOS Device (arm64, armv7)” (или “Generic iOS Device”) и выберите Product -> Build. Дождитесь окончания сборки.
Если у вас доступен только вариант “Any iOS Device (arm64)”, измените iOS Deployment target на 10.3 в настройках “Project -> Basic -> Deployment”. Это сделает ваш storyboard совместимым с устройствами armv7 (например, iPhone5c).
Если вы используете изображения в storyboard, они не будут автоматически включены в 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 подготовил видеоруководство, показывающее этот процесс.
Когда у вас будет файл storyboard, вы сможете указать его в game.project.
Это обязательно начиная с Defold 1.2.175.
Использование asset catalog — предпочтительный для Apple способ управления иконками приложения. Фактически только так можно предоставить иконку, используемую в листинге App Store. Asset catalog создается так же, как storyboard, через Xcode. Запустите Xcode и создайте новый проект. Выберите iOS и Single View App:

Нажмите Next и перейдите к настройке проекта. Укажите Product Name:
![]()
Нажмите Create для завершения. Проект создан, и можно переходить к созданию asset catalog:
![]()
Перетащите изображения в пустые ячейки, соответствующие различным поддерживаемым размерам иконок:
![]()
Не добавляйте иконки для 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
Когда у вас будет файл asset catalog, его и иконки можно будет указать в game.project:
![]()
Иконку App Store не нужно указывать в game.project. Она автоматически извлекается из файла Assets.car при загрузке в iTunes Connect.
Редактор создает файл .ipa, который является iOS application bundle. Чтобы установить его на устройство, можно использовать один из следующих инструментов:
ios-deployApple Configurator 2 из macOS App StoreТакже можно использовать консольный инструмент xcrun simctl для работы с iOS simulator, доступными через 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
Privacy manifest — это список свойств, в котором фиксируются типы данных, собираемых вашим приложением или сторонним SDK, а также причины использования required reasons API вашим приложением или сторонним SDK. Для каждого типа данных, который собирает приложение или сторонний SDK, и для каждой категории required reasons API, которую оно использует, причины должны быть указаны в bundled privacy manifest file.
Defold предоставляет privacy manifest по умолчанию через поле Privacy Manifest в файле game.project. При создании application bundle privacy manifest будет объединён с любыми privacy manifests из зависимостей проекта и включён в application bundle.
Подробнее о privacy manifests читайте в официальной документации Apple.
Когда вы отправляете игру в App Store, вам будет предложено указать информацию Export Compliance относительно использования шифрования в приложении. Apple объясняет, почему это требуется:
“When you submit your app to TestFlight or the App Store, you upload your app to a server in the United States. If you distribute your app outside the U.S. or Canada, your app is subject to U.S. export laws, regardless of where your legal entity is based. If your app uses, accesses, contains, implements, or incorporates encryption, this is considered an export of encryption software, which means your app is subject to U.S. export compliance requirements, as well as the import compliance requirements of the countries where you distribute your app.”
Игровой движок Defold использует шифрование для следующих целей:
Эти варианты использования шифрования в движке Defold освобождены от требований по предоставлению документов Export Compliance в соответствии с законодательством США и Европейского союза. Большинство проектов на Defold останутся освобожденными от этих требований, но добавление других криптографических методов может изменить этот статус. Вы обязаны самостоятельно убедиться, что проект соответствует требованиям этих законов и правилам App Store. Дополнительную информацию см. в документе Apple Export Compliance Overview.
Если вы считаете, что ваш проект освобожден от этих требований, установите ключ ITSAppUsesNonExemptEncryption в False в Info.plist проекта. Подробнее см. в Application Manifests.
A: Убедитесь, что в вашем проекте Defold используется тот же bundle identifier, что и в проекте Xcode, когда вы генерировали mobile provisioning profile.
A: Из Inspect the entitlements of a built app:
codesign -d --ent :- /path/to/the.app
A: Из Inspecting a profile’s entitlements:
security cms -D -i /path/to/iOSTeamProfile.mobileprovision
Did you spot an error or do you have a suggestion? Please let us know on GitHub!
GITHUB