从iOS应用程序运行Haxe – hxRunLibrary()错误

对于客户端,我开发了一个使用Cordova (PhoneGap)作为用户界面的iOS + Android应用程序。 现在,作为这个应用程序的更新,我正在尝试添加一个写在Haxe的游戏。 最初这个游戏是为Flash target而编写的,但是我已经更新了它与Android and iOSC++目标一起工作。

在Android上,很容易使用活动(Haxe部分作为单独的活动运行)将其与Cordova应用程序集成,但是在iOS上实现类似结果时遇到了一些麻烦。

到目前为止,我已经尝试在我的项目中包含所有hxcpp生成的代码(与NME设置XCode项目的方式相同,当您执行“nme build ios”时),并且在我想要的时候从代码中调用hxRunLibrary()游戏运行。

问题是, hxRunLibrary()似乎想创build自己的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用于graphics的SDL有关。 从我所了解的SDL需要运行的应用程序的主要function,这与cocoa的冲突,也需要从主函数运行。

有没有简单的方法呢? 我查看过hxcpp源代码,但找不到与UIApplication相关的代码或SDL的任何入口代码。

也许有人可以把我指向正确的方向。 谢谢!

那么,我已经search了一些有关Haxe的信息。 我所理解的是,Haxe将为你制定一份完整的申请表,其中包括主要function。 这就是错误发生的原因。

你可以通过调用UIApplicationMain函数两次来模拟问题。

在我看来,你必须从Haxe生成的源代码文件中删除有关UIApplicationMain的代码。

cordova有能力被集成为一个更大的应用程序的一部分

遇到了同样的问题。

http://devgirl.org/2012/11/15/embed-cordovaphonegap-in-your-native-ios-app/这篇文章将帮助;

你实际上并没有创build一个新的项目,而是通过ios webview将其embedded到webview中,而cordova则是一个子视图。

    Interesting Posts