【发布时间】:2015-10-30 04:58:50
【问题描述】:
我有一个可以在 RoboVM 下正常运行的跨平台应用程序。我开始将应用程序的图形后端移至 LibGDX。在 LWJGL 下一切运行良好,但我无法让 LibGDX 在 RoboVM 上运行。
我真的不想安装和学习另一个构建工具或依赖管理的东西,所以我希望不需要使用 Gradle。
这是我到目前为止所做的:
- 从releases directory 下载了最新的 LibGDX 版本 (1.6.1)。
- 将 zip 文件解压缩到我计算机上的某个目录中(不在我的 Eclipse 项目中)。
- 在 Eclipse 中创建了一个新的用户库,其中包含以下文件夹中的这些外部 jar:
gdx.jar、gdx-backend-robovm.jar和gdx-natives.jar - 将用户库添加到我的项目中。
- 在我的 RoboVM 项目的根目录中创建了一个名为
libs的文件夹。 - 将
iOS文件夹从 libgdx 文件夹复制到包含以下文件的libs:
libgdx.a和libObjectAL.a -
在我的项目的 robovm.xml 中添加了
<libs>、<frameworks>和<forceLinkClasses>部分,现在看起来像这样:<config> <executableName>${app.executable}</executableName> <mainClass>${app.mainclass}</mainClass> <os>ios</os> <arch>thumbv7</arch> <resources> <resource> <directory>resources</directory> <skipPngCrush>true</skipPngCrush> </resource> </resources> <libs> <lib>libs/ios/libgdx.a</lib> <lib>libs/ios/libObjectAL.a</lib> </libs> <frameworks> <framework>UIKit</framework> <framework>OpenGLES</framework> <framework>QuartzCore</framework> <framework>CoreGraphics</framework> <framework>OpenAL</framework> <framework>AudioToolbox</framework> <framework>AVFoundation</framework> </frameworks> <forceLinkClasses> <pattern>com.badlogix.gdx.scenes.scene2d.ui.*</pattern> </forceLinkClasses> <target>ios</target> <iosInfoPList>Info.plist.xml</iosInfoPList> </config> -
在我的 main 方法中添加了以下代码:
IOSApplicationConfiguration cfg = new IOSApplicationConfiguration(); cfg.orientationLandscape = true; cfg.orientationPortrait = true; new IOSApplication(getApplicationListener(), cfg); System.out.println("Should be ready...");
getApplicationListener() 返回的对象与我的 LWGJL 应用程序中的对象相同。
此对象中的create() 方法以System.out.println("Hello?"); 开头。
当我运行该应用程序时,它会启动(启动图像和所有)并开始播放一些声音效果(不使用 LibGDX!)但只是显示黑屏。它打印“Should be ready...”,但不打印“Hello?”。因此,ApplicationListener 可以正常创建,IOSApplication 可以正常创建,但永远不会调用侦听器的 create() 方法。与往常一样,没有任何有用的(或任何与此相关的)错误消息...
我错过了什么吗???
我很确定 .a 文件已包含在构建中,因为一旦我将 <libs> 部分添加到 robovm.xml 中,我就会被构建错误淹没,这些错误在我添加<frameworks> 部分。还有其他一些我需要担心的导出设置吗?有没有办法至少得到某种错误或日志消息?
更新:
如果我在模拟器中运行它,我也会出现黑屏。但是如果我点击黑屏,我会收到以下错误消息:
unexpected nil window in _UIApplicationHandleEventFromQueueEvent, _windowServerHitTestWindow: <UIClassicWindow: 0x7fafa27175b0; frame = (0 0; 375 667); userInteractionEnabled = NO; gestureRecognizers = <NSArray: 0x7fafa2514d70>; layer = <UIWindowLayer: 0x7fafa2718060>>
我将 LibGDX 测试项目导入到我的 Eclipse/RoboVM 设置中,并且工作正常...
【问题讨论】:
标签: java eclipse libgdx robovm