Запуск 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 выполняет его.