【发布时间】:2013-04-16 21:41:26
【问题描述】:
对于一个客户,我开发了一个iOS + Android 应用程序,使用Cordova (PhoneGap) 作为用户界面。现在,作为这个应用程序的更新,我正在尝试添加一个用 Haxe 编写的游戏。最初该游戏是为Flash target 编写的,但我已对其进行了更新以与Android and iOS 的C++ 目标一起使用。
在 Android 上,使用活动很容易将其与 Cordova 应用程序集成(Haxe 部分作为单独的活动运行),但在 iOS 上实现类似结果时遇到了一些麻烦。
到目前为止,我已尝试将所有hxcpp 生成的代码包含在我的项目中(与 NME 在您执行“nme build ios”时设置 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 的入口代码。
也许有人可以为我指明正确的方向。谢谢!
【问题讨论】: