Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

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

По-моему, вам нужно удалить код из UIApplicationMain из файла кода доступа, созданного Haxe.

Ответ 2

Кордова имеет возможность интегрироваться как часть более крупного приложения

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

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

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