Запуск Haxe из приложения iOS - ошибка hxRunLibrary()

Для клиента я разработал 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 нужно запускать из основной функции приложения, которая создала конфликт с Какао, который также должен запускаться из основной функции.

Есть ли простой способ обойти это? Я посмотрел в источниках hxcpp, но не смог найти UIApplication связанный код или любой код входа для SDL.

Возможно, кто-то может указать мне правильное направление. Спасибо!

2 ответа

Ну, я нашел информацию о Хэйкс. что я понял, так это то, что Haxe предоставит вам готовое приложение. Это означает, что оно включает в себя основную функцию. Вот почему ошибка произошла.

И вы можете смоделировать проблему, дважды вызвав функцию UIApplicationMain.

На мой взгляд, вы должны удалить код о UIApplicationMain из файла кода souce, созданного Haxe .

Cordova обладает способностью интегрироваться как часть более крупного приложения.

столкнулся с той же проблемой.

http://devgirl.org/2012/11/15/embed-cordovaphonegap-in-your-native-ios-app/ эта статья поможет

вы на самом деле не создаете новый проект, вместо этого вы встраиваете его в веб-представление через ios webview, а cordova выполняет его.

Другие вопросы по тегам