2012-05-27 21 views
1

我打算使用SDL(Simple DirectMedia Layer)在使用ffmpeg库的Android应用程序中显示视频输出。我从http://www.libsdl.org/download-1.2.php下载了源代码,并在我的Ubuntu上构建了(./configure,make & make install)。但是当我使用这些.so文件时,Android ndk-build会抱怨“无法读取符号,文件格式错误”。如何为Android构建SDL库

我可以使用在Android上构建于Ubuntu上的.so文件,还是需要以不同方式构建Android版SDL?

+1

你需要使用[ndk](http://developer.android.com /sdk/ndk/index.html) - Android设备通常使用arm处理器,而x86 .so-file不兼容。 – Jens

+0

@Jens感谢您澄清。您能否描述我如何使用ndk构建SDL?我尝试用目标类型修改配置文件,但遇到了构建错误。或者有什么地方可以下载已编译的libSDL.so文件? – Harish

+1

你检查了关于Android的libsdl的[readme](http://www.libsdl.org/tmp/SDL/README.android)吗? – Jens

回答

1

正如写在README.android

,你需要在你的JNI添加文件夹中的符号链接SDL文件夹,在你jni/src/Android.mk后,要确保你有这些行

SDL_PATH := ../SDL 

LOCAL_C_INCLUDES := $(LOCAL_PATH)/$(SDL_PATH)/include 

# Add your application source files here... 
LOCAL_SRC_FILES := $(SDL_PATH)/src/main/android/SDL_android_main.cpp \ 
    main.c 

LOCAL_SHARED_LIBRARIES := SDL 

LOCAL_LDLIBS := -lGLESv1_CM -llog 

include $(BUILD_SHARED_LIBRARY) 

这样的。所以SDL将会与您的项目一起编译为您的目标(当然是ARM cpu),并且会自动包含在最终的.apk

当您执行./configure & & make & & make install,你实际上是在为你的电脑的CPU构建.so(当然是x86/x86_64)