【问题标题】:How to build SDL libraries for Android如何为 Android 构建 SDL 库
【发布时间】:2012-06-02 03:01:10
【问题描述】:

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

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

【问题讨论】:

  • 您需要使用ndk 构建它们 - Android 设备通常使用 arm 处理器,而您的 x86 .so 文件不兼容。
  • @Jens 感谢您的澄清。您能否描述一下我如何使用 ndk 构建 SDL?我尝试使用目标类型修改配置文件,但遇到了构建错误。或者有什么地方可以下载已经编译好的 libSDL.so 文件?
  • 您查看过readme 中有关 Android 的 libsdl 吗?
  • @Jens 谢谢,我已阅读自述文件并尝试了很多方法,但无法成功链接。所以最后我选择了 OpenGL,现在显示效果很好。

标签: android build android-ndk ffmpeg sdl


【解决方案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 的 .so 将与您的项目一起为您的目标(当然是 ARM cpu)编译,并自动包含在最终的 .apk 中

当您执行 ./configure && make && make install 时,您实际上是在为您的计算机 CPU 构建 .so(当然对于 x86 / x86_64)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-16
    • 2016-12-13
    • 2017-09-23
    • 2015-09-17
    • 2011-05-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多