Сборка шаблонов iOS
Устройство, симулятор, Swift, библиотеки и упаковка шаблонов.
Это инструкция по сборке нативных шаблонов экспорта, а не редактора или готовой игры. Для экспорта проекта используйте экспорт для iOS.
Подготовка
Откройте терминал в Source, рядом с SConstruct. Нужны Python 3.9+, SCons 4.4+ и полный Xcode с установленным iOS SDK. Одна установка Command Line Tools не заменяет iOS SDK. Выбор Xcode описан в инструкции Apple; установка компонентов — в документации Xcode.
Проверьте выбранные инструменты без изменения настроек:
xcode-select -p
xcrun --sdk iphoneos --show-sdk-path
xcrun --sdk iphonesimulator --show-sdk-path
xcrun --find swiftc
python3 --version
scons --versionТекущие build-скрипты используют Swift 6, C++ interop и минимальную цель iOS 15.0. Это параметры исходников Reckfell 1.0.0, а не гарантия работы любой комбинации Xcode, SDK и устройства. Если команда SDK завершается ошибкой, сначала установите соответствующий компонент Xcode и выберите полный Xcode в настройках Command Line Tools.
Устройство и симулятор
| Назначение | Архитектура | Параметр | SDK |
|---|---|---|---|
| iPhone/iPad | arm64 | simulator=no | iphoneos |
| Симулятор на Apple silicon | arm64 | simulator=yes | iphonesimulator |
| Симулятор на Intel | x86_64 | simulator=yes | iphonesimulator |
Одинаковая архитектура arm64 не делает библиотеку устройства библиотекой симулятора. Для x86_64 без simulator=yes конфигуратор завершится с ошибкой. В текущем конфигураторе симулятор отключает Metal и Vulkan с предупреждением; для него используйте Compatibility/OpenGL ES, а визуальный результат Metal/Vulkan проверяйте на устройстве.
Сборка библиотек
Сначала соберите debug и release для устройства:
scons platform=ios target=template_debug arch=arm64 simulator=no -j4
scons platform=ios target=template_release arch=arm64 simulator=no -j4При необходимости добавьте варианты симулятора. Выберите строку для архитектуры Mac; для обеих архитектур выполните обе пары:
scons platform=ios target=template_debug arch=arm64 simulator=yes -j4
scons platform=ios target=template_release arch=arm64 simulator=yes -j4
scons platform=ios target=template_debug arch=x86_64 simulator=yes -j4
scons platform=ios target=template_release arch=x86_64 simulator=yes -j4-j4 задаёт четыре параллельные задачи; уменьшите число при нехватке памяти. Результат — статические библиотеки bin/libreckfell…a. Имя включает target, архитектуру, .simulator для симулятора и дополнительные суффиксы конфигурации. Это не .ipa и не исполняемый редактор.
Примеры выше собирают нативную часть без C#: модуль по умолчанию выключен. Для собственного C#-шаблона требуется module_mono_enabled=yes, но одного этого флага недостаточно: отдельно нужны совместимые managed-сборки и мобильная цепочка публикации/AOT. Не подставляйте Windows SDK в iOS-шаблон. Успешная нативная сборка не подтверждает запуск C#-игры на iOS.
Упаковка шаблона
Добавьте generate_bundle=yes к последней команде выбранной конфигурации, после сборки всех нужных вариантов. Например, для набора только с устройством:
scons platform=ios target=template_release arch=arm64 simulator=no generate_bundle=yes -j4Упаковщик использует misc/dist/apple_embedded_xcode, собирает найденные библиотеки в libreckfell.ios.debug.xcframework и libreckfell.ios.release.xcframework, затем создаёт bin/reckfell_ios*.zip. Промежуточная папка bin/ios_xcode удаляется после архивации. Не храните в ней свои файлы. Отсутствующие варианты упаковщик не компилирует: наличие ZIP не доказывает полноту всех slices. Проверьте, что внутри есть непустая библиотека для каждого нужного target и назначения.
Для Vulkan требуется статическая MoltenVK.xcframework с устройством и симулятором; путь можно передать через vulkan_sdk_path. Упаковщик копирует MoltenVK, когда находит её, поэтому наличие ZIP само по себе не доказывает наличие этой зависимости. AccessKit также требует своей iOS .xcframework; при отсутствии зависимости конфигуратор отключает поддержку экранного диктора с предупреждением. Не игнорируйте эти предупреждения, если функция нужна проекту.
Если сборка не работает
| Симптом | Что проверить |
|---|---|
cstdint или системный framework не найден | Полный Xcode, выбранный developer directory и SDK. Не удаляйте системные каталоги как первый способ исправления. |
| Swift compiler/interop error | Выбранный swiftc, поддержку Swift 6, SDK и первое сообщение компилятора. Наличие clang не заменяет Swift. |
| Библиотека собрана для другого назначения | Пару simulator/SDK, архитектуру и выбранный slice .xcframework. |
| Игра не подписывается или не запускается | Это следующий этап: Xcode-проект, signing и настройки экспорта. Сборка .a не проверяет их. |
Эта инструкция сверена с build-скриптами. Сборка на macOS, запуск на iOS, подпись, экспорт C# и качество графики в рамках этой проверки не выполнялись.