あるクライアントのために、ユーザー インターフェイスに をiOS + Android
使用してアプリを開発しました。現在、このアプリのアップデートとして、Haxe で記述されたゲームを追加しようとしています。元々このゲームは 用に記述されていましたが、のターゲットで動作するようにアップデートしました。Cordova (PhoneGap)
Flash target
C++
Android and iOS
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 はアプリのメイン関数から実行する必要があり、これもメイン関数から実行する必要がある Cocoa と競合が発生しました。
これを回避する簡単な方法はありますか? hxcpp ソースを調べましたが、UIApplication
関連コードや SDL のエントリ コードを見つけることができませんでした。
おそらく誰かが私に正しい方向を指し示してくれるでしょう。ありがとう!
ベストアンサー1
さて、私は Haxe に関する情報を Google で検索しました。私が理解したのは、Haxe が完成したアプリケーションを生成するということです。つまり、メイン関数が含まれているということです。これがエラーが発生する理由です。
また、UIApplicationMain 関数を 2 回呼び出すことで問題をシミュレートできます。
私の意見では、Haxe によって生成されたソース コード ファイルから UIApplicationMain に関するコードを削除する必要があります。