我有一个在Windows中运行的SDL2演示程序,但是当我将此代码移植到Android时,完成的应用程序将显示几秒钟的黑屏然后悄悄退出(没有错误,无),而不是在游戏循环中显示漂亮的测试图形。Android SDL2应用程序黑屏然后退出
如果我在main的开头添加了一个对SDL_ShowSimpleMessageBox的调用,没有任何反应(我已经知道它没有为Android实现 - grrr),但是如果我注释掉我的主代码,ndk-build抱怨它缺失,所以它肯定被包含在构建中,但似乎没有被调用。
我按照README-android.txt中的步骤操作。在过去的2个月里解决了大约200个小时的问题之后,我最终制作了一个apk。我做了下面的修复可能会破坏一些东西?
第一个问题是NDK-BUILD未能找到SDL_config.h,因为README-android.txt中步骤#2的指示是错误的。修复了重建目录或编辑Android.mk中的路径。
第二个问题是NDK-BUILD未能找到EGL/eglplatform.h。通过将APP_PLATFORM := android-9添加到Application.mk来修复。
第三个问题是NDK-BUILD不能识别C++ 11,所以我加了APP_CPPFLAGS += -std=c++11到Application.mk。
第四个问题是NDK-BUILD没有找到#include (用于va_list和va_start)。包括反而解决了这个问题。
Fith问题是ant构建failing at [aapt] Generating resource IDs。我通过删除build-tools verion 21.1.1和安装版本20来解决这个问题。
这是我第一次在这里发布求助信息,因为我很绝望。我是一名经验丰富的C++编码人员,但对于java来说,却是一名完全新手。我在eclipse中为Windows SDL2使用C++,并且我完全从命令行构建了apk。
试过几种不同的设备。看着logcat,有一个signal 7 SIGBUS错误:
V/SurfaceView(3497): Layout: x=0 y=0 w=1280 h=720, frame=Rect(0, 0 - 1280, 720)
F/libc (3497): Fatal signal 7 (SIGBUS) at 0x00000000 (code=128)
I/ActivityManager( 162): Displayed org.libsdl.app/.SDLActivity: +416ms
V/SDL (3497): onWindowFocusChanged(): true
W/InputManagerService( 162): Starting input on non-focused client
[email protected] (uid=10021 pid=331)
+0
我代替我SDL2源代码用一个简单的main.c,显示一个盒子和暂停- 有用! Android构建工作正常,所以我的代码在Windows上可用,但不适用于Android。我一直严格保持我的代码的便携性。至少现在我知道错误在哪里,我可以隔离部分代码直到它工作。观看这个空间...... –
+0
值得注意的是,SDL2的“SDL_ShowSimpleMessageBox”在Android实现上没有任何作用。非常令人沮丧,因为我依靠这个进行调试。 –