Для клиента я разработал iOS + Android
приложение, используя Cordova (PhoneGap)
для пользовательского интерфейса. Теперь, в качестве обновления этого приложения, я пытаюсь добавить игру, написанную на Haxe. Изначально игра была написана для Flash target
, но я обновил ее, чтобы она работала с C++
целями для Android and iOS
.
На Android было легко интегрировать это с приложением Cordova
с помощью действий (часть Haxe выполняется как отдельное действие), но у меня возникли проблемы с достижением аналогичного результата на iOS.
До сих пор я пытался включить весь сгенерированный hxcpp
код в свой проект (так же, как NME настраивает проект XCode, когда вы выполняете «nme build ios»), и я вызываю hxRunLibrary()
из своего кода, когда хочу, чтобы игра бежать.
Проблема в том, что hxRunLibrary()
, кажется, хочет создать свой собственный экземпляр UIApplication
, который завершается с ошибкой со следующей ошибкой, так как мое основное приложение уже запускает экземпляр:
*** Assertion failure in void UIApplicationInstantiateSingleton(Class)(), /SourceCache/UIKit_Sim/UIKit-2380.17/UIApplication.m:2037
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'There can only be one UIApplication instance.'
Я думаю, это может иметь какое-то отношение к SDL, который Haxe использует для графики. Насколько я понимаю, SDL нужно запускать из основной функции приложения, что создало конфликт с Cocoa, который также должен запускаться из основной функции.
Есть ли простой способ обойти это? Я просмотрел исходники hxcpp, но не смог найти код, связанный с UIApplication
, или какой-либо код входа для SDL.
Возможно, кто-то может указать мне в правильном направлении. Спасибо!