从iOS运行Haxe app - hxRunLibrary()错误



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

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

到目前为止,我已经尝试在我的项目中包含所有hxcpp生成的代码(在相同的方式,NME设置XCode项目,当你做"NME构建ios"),我调用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.'

我认为这可能与SDL有关,它是Haxe用于图形的。根据我的理解,SDL需要从应用程序的主函数运行,这与Cocoa产生了冲突,也需要从主函数运行。

有什么简单的方法吗?我已经查看了hxcpp源代码,但无法找到UIApplication相关代码,或SDL的任何入口代码。

也许有人能给我指个正确的方向。谢谢!

嗯,我在谷歌上搜索了一些关于Haxe的信息。我所理解的是Haxe将为您生成一个完整的应用程序,这意味着它包括main函数。这就是错误发生的原因。

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

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

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

遇到了同样的问题。

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

你实际上不创建一个新项目,而是通过ios的webview嵌入到一个webview中,cordova作为一个子视图

相关内容

  • 没有找到相关文章

最新更新