2013-04-16 16 views
38

Per un client ho sviluppato un'applicazione iOS + Android utilizzando Cordova (PhoneGap) per l'interfaccia utente. Ora, come aggiornamento di questa app, sto tentando di aggiungere un gioco che è stato scritto in Haxe. Originariamente il gioco è stato scritto per lo Flash target, ma l'ho aggiornato per funzionare con gli obiettivi C++ per Android and iOS.Esecuzione di Haxe dall'app iOS - hxRunLibrary() errore

Su Android è stato facile integrare questo con i Cordova attività app utilizzando (la parte Haxe viene eseguito come un'attività separata), ma sto avendo qualche difficoltà a raggiungere un risultato simile su iOS.

Finora ho cercato di includere tutto il codice generato da hxcpp nel mio progetto (nello stesso modo in cui NME imposta il progetto XCode quando si esegue "nme build ios") e sto chiamando hxRunLibrary() dal mio codice quando Voglio che il gioco funzioni.

Il problema è che hxRunLibrary() sembra voler creare un proprio UIApplication esempio, che non riesce con il seguente errore, dal momento che la mia applicazione principale è già in esecuzione un'istanza:

*** 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.' 

penso che potrebbe avere qualcosa a fare con SDL, che Haxe utilizza per la grafica. Da quanto ho capito SDL deve essere eseguito dalla funzione principale dell'app, che ha creato un conflitto con Cocoa che deve anche essere eseguito dalla funzione principale.

C'è un modo semplice per aggirare questo? Ho cercato nelle sorgenti hxcpp, ma non sono riuscito a trovare il codice relativo UIApplication o alcun codice di accesso per SDL.

Forse qualcuno potrebbe indicarmi la giusta direzione. Grazie!

risposta

3

Bene, ho cercato su Google alcune informazioni su Haxe. quello che ho capito è che The Haxe sarà orgoglioso di un'applicazione completa per te. Questo significa che include la funzione principale. Ecco perché l'errore è successo.

E si può simulare il problema invocando la Funzione UIApplicationMain due volte.

A mio parere, è necessario rimuovere il codice su UIApplicationMain dal file di codice souce prodotto da Haxe.