从iOS应用程序运行Haxe – hxRunLibrary()错误
对于客户端,我开发了一个使用Cordova (PhoneGap)
作为用户界面的iOS + Android
应用程序。 现在,作为这个应用程序的更新,我正在尝试添加一个写在Haxe的游戏。 最初这个游戏是为Flash target
而编写的,但是我已经更新了它与Android and iOS
的C++
目标一起工作。
在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则是一个子视图。