38

对于一个客户,我开发了一个用于用户界面的iOS + Android应用程序。Cordova (PhoneGap)现在,作为这个应用程序的更新,我正在尝试添加一个用 Haxe 编写的游戏。Flash target最初游戏是C++Android and iOS.

在 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 的任何入口代码。

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

4

2 回答 2

3

好吧,我用谷歌搜索了一些关于 Haxe 的信息。我的理解是,Haxe 将为您提供完整的应用程序。这意味着它包括主要功能。这就是发生错误的原因。

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

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

于 2014-04-25T08:40:36.067 回答
1

科尔多瓦有能力集成为更大的应用程序的一部分

遇到了同样的问题。

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

您实际上并没有创建一个新项目,而是通过 ios webview 将其嵌入到 webview 中,cordova 充当子视图。

于 2013-10-08T21:56:51.923 回答