2013-04-16 6 views
38

Для клиента я разработал приложение iOS + Android, используя Cordova (PhoneGap) для пользовательского интерфейса. Теперь, как обновление этого приложения, я пытаюсь добавить игру, написанную в Haxe. Первоначально игра была написана для Flash target, но я обновил ее для работы с целями C++ для Android and iOS.Запуск Haxe из приложения iOS - ошибка hxRunLibrary()

На 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.

Возможно, кто-то может указать мне в правильном направлении. Благодаря!

ответ

1

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

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

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

вы не на самом деле создать новый проект, а не встраивать его в WebView через WebView Ios и Cordova действует подвид.

3

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

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

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

Смежные вопросы