2013-04-16 10 views
38

クライアントの場合、私はiOS + Androidアプリを開発しました。ユーザーインターフェイスにCordova (PhoneGap)を使用しています。今、このアプリのアップデートとして、私はHaxeで書かれたゲームを追加しようとしています。もともとゲームはFlash targetのために書かれましたが、私はAndroid and iOSC++ターゲットで動作するように更新しました。iOSアプリケーションからHaxeを実行しています - hxRunLibrary()エラー

Androidの場合、これをCordovaアプリでアクティビティを使用して簡単に統合できました(Haxeの部分は別のアクティビティとして実行されます)が、iOSで同様の結果を達成するには問題があります。

これまで私は全てのプロジェクトに「hxcpp」というコードを生成しようとしましたが(「nme build ios」を実行するときにNMEがXCodeプロジェクトを設定するのと同じ方法で)、私のコードから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.' 

私はそれが何かを持っているかもしれないと思いますHaxeがグラフィックスに使用するSDLを使用します。私が理解していることから、SDLは主機能から実行する必要があるココアとの競合を引き起こしたアプリケーションの主な機能から実行する必要があります。

これを回避する手段はありますか?私はhxcppソースを調べましたが、UIApplication関連のコード、またはSDLのエントリコードが見つかりませんでした。

おそらく誰かが正しい方向に私を指すことができます。ありがとう!

答えて

1

コルドバは、同じ問題に遭遇した大きなアプリケーション

の一部として統合する能力を持っています。

http://devgirl.org/2012/11/15/embed-cordovaphonegap-in-your-native-ios-app/ この記事はあなたがいけない

が実際にあなたは、IOSのWebViewを介して、WebViewの中でそれを埋め込み、コルドバは、サブビューを働き代わりに新しいプロジェクトを作成するのに役立ちます。

3

私はHaxeに関するいくつかの情報を探せました。私が理解したことは、The Haxeがあなたのために完成したアプリケーションをプロデュースするということです。つまり、それは主な機能を含んでいます。だからこそエラーが起こるのです。

そして、UIApplicationMain関数を2回呼び出すことで問題をシミュレートできます。

私の意見では、UaxpplicationMainに関するコードをHaxeによって作成されたsouceコードファイルから削除する必要があります。

関連する問題