Dla klienta opracowałem aplikację iOS + Android
, korzystającą z interfejsu użytkownika Cordova (PhoneGap)
. Teraz, jako aktualizacja tej aplikacji, próbuję dodać grę, która została napisana w Haxe. Oryginalnie gra została napisana dla Flash target
, ale zaktualizowałem ją do pracy z obiektami C++
dla Android and iOS
.Uruchamianie aplikacji Haxe z iOS - hxRunLibrary() błąd
Na Androidzie łatwo było zintegrować to z aplikacją Cordova
za pomocą działań (część Haxe działa jako osobne działanie), ale mam pewne problemy z uzyskaniem podobnego wyniku na iOS.
Do tej pory starałem się uwzględnić cały wygenerowany kod hxcpp
w moim projekcie (w ten sam sposób, w jaki NME konfiguruje projekt XCode po wykonaniu polecenia "nme build ios"), a następnie wywołuję kod hxRunLibrary()
z mojego kodu, gdy Chcę, aby gra działała.
Problemem jest to, że hxRunLibrary()
wydaje chcą stworzyć własną UIApplication
instancji, który nie powiedzie się z powodu następującego błędu, ponieważ moim głównym aplikacja jest już uruchomiona instancję:
*** 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.'
myślę, że może to mieć coś wspólnego z SDL, które Haxe używa do grafiki. Z tego, co rozumiem, SDL musi wynikać z głównej funkcji aplikacji, która stworzyła konflikt z Cocoa, który również musi być uruchamiany z głównej funkcji.
Czy istnieje prosty sposób obejścia tego? Sprawdziłem źródła hxcpp, ale nie udało mi się znaleźć kodu związanego z kodem UIApplication
ani kodu dostępu do SDL.
Być może ktoś mógłby wskazać mi właściwy kierunek. Dzięki!