[原]SDL开发教程我们知道了如何在pc下使用SDL进行开发,在android上面是否一样可以使用呢?答案是肯定的。

下面我们进行移植SDL到Android,这里都是基于SDL最新版进行移植的,在Eclipse中编译。

开发环境:Ubuntu 14.04 64位,Eclipse + CDT + ADT,NDK

一、到官网下载http://www.libsdl.org/hg.php 下载2.0的源码也可以通过hg来clone最新的源码
hg clone http://hg.libsdl.org/SDL

二、编译SDL

进入到下载的文件SDL2-2.0.3中将android-project导入到Eclipse中,进入jni文件夹,新建一个SDL文件,将SDL2-2.0.3\src 、SDL2-2.0.3\include、SDL2-2.0.3\Android.mk文件拷贝到android-project\jni\SDL\中。
 
android-project\jni\SDL\Android.mk文件内容如下:
LOCAL_PATH := $(call my-dir)

###########################
#
# SDL shared library
#
########################### include $(CLEAR_VARS) LOCAL_MODULE := SDL2 LOCAL_C_INCLUDES := $(LOCAL_PATH)/include LOCAL_EXPORT_C_INCLUDES := $(LOCAL_C_INCLUDES) LOCAL_SRC_FILES := \
$(subst $(LOCAL_PATH)/,, \
$(wildcard $(LOCAL_PATH)/src/*.c) \
$(wildcard $(LOCAL_PATH)/src/audio/*.c) \
$(wildcard $(LOCAL_PATH)/src/audio/android/*.c) \
$(wildcard $(LOCAL_PATH)/src/audio/dummy/*.c) \
$(LOCAL_PATH)/src/atomic/SDL_atomic.c \
$(LOCAL_PATH)/src/atomic/SDL_spinlock.c.arm \
$(wildcard $(LOCAL_PATH)/src/core/android/*.c) \
$(wildcard $(LOCAL_PATH)/src/cpuinfo/*.c) \
$(wildcard $(LOCAL_PATH)/src/dynapi/*.c) \
$(wildcard $(LOCAL_PATH)/src/events/*.c) \
$(wildcard $(LOCAL_PATH)/src/file/*.c) \
$(wildcard $(LOCAL_PATH)/src/haptic/*.c) \
$(wildcard $(LOCAL_PATH)/src/haptic/dummy/*.c) \
$(wildcard $(LOCAL_PATH)/src/joystick/*.c) \
$(wildcard $(LOCAL_PATH)/src/joystick/android/*.c) \
$(wildcard $(LOCAL_PATH)/src/loadso/dlopen/*.c) \
$(wildcard $(LOCAL_PATH)/src/power/*.c) \
$(wildcard $(LOCAL_PATH)/src/power/android/*.c) \
$(wildcard $(LOCAL_PATH)/src/filesystem/dummy/*.c) \
$(wildcard $(LOCAL_PATH)/src/render/*.c) \
$(wildcard $(LOCAL_PATH)/src/render/*/*.c) \
$(wildcard $(LOCAL_PATH)/src/stdlib/*.c) \
$(wildcard $(LOCAL_PATH)/src/thread/*.c) \
$(wildcard $(LOCAL_PATH)/src/thread/pthread/*.c) \
$(wildcard $(LOCAL_PATH)/src/timer/*.c) \
$(wildcard $(LOCAL_PATH)/src/timer/unix/*.c) \
$(wildcard $(LOCAL_PATH)/src/video/*.c) \
$(wildcard $(LOCAL_PATH)/src/video/android/*.c) \
$(wildcard $(LOCAL_PATH)/src/test/*.c)) LOCAL_CFLAGS += -DGL_GLEXT_PROTOTYPES
LOCAL_LDLIBS := -ldl -lGLESv1_CM -lGLESv2 -llog -landroid include $(BUILD_SHARED_LIBRARY) ###########################
#
# SDL static library
#
########################### LOCAL_MODULE := SDL2_static LOCAL_MODULE_FILENAME := libSDL2 LOCAL_SRC_FILES += $(LOCAL_PATH)/src/main/android/SDL_android_main.c LOCAL_LDLIBS :=
LOCAL_EXPORT_LDLIBS := -Wl,--undefined=Java_org_libsdl_app_SDLActivity_nativeInit -ldl -lGLESv1_CM -lGLESv2 -llog -landroid include $(BUILD_STATIC_LIBRARY)

在Eclipse中配置NDK, Eclipse->Window->Prefreneces->Android->NDK.

三、如果直接编译的话会提示如下错误

fatal error: EGL/egl.h: No such file or directory  

查看EGL的支持是在2.3版本以上,所以我们需要添加平台的支持,所以在jni目录修改下Application.mk文件来指定编译平台:

# Uncomment this if you're using STL in your project
# See CPLUSPLUS-SUPPORT.html in the NDK documentation for more information
# APP_STL := stlport_static APP_ABI := armeabi armeabi-v7a x86
APP_PLATFORM := android-

四、在Eclipse中执行Ctrl+B,就会编译出libSDL2.so,编译过程如下:

:: **** Build of configuration Default for project Android_SDL4 ****
/opt/android-ndk/ndk/ndk-build all
Compile thumb : SDL2 <= SDL_assert.c
Compile thumb : SDL2 <= SDL.c
Compile thumb : SDL2 <= SDL_error.c
Compile thumb : SDL2 <= SDL_hints.c
Compile thumb : SDL2 <= SDL_log.c
Compile thumb : SDL2 <= SDL_audio.c
Compile thumb : SDL2 <= SDL_audiocvt.c
Compile thumb : SDL2 <= SDL_audiodev.c
Compile thumb : SDL2 <= SDL_audiotypecvt.c
Compile thumb : SDL2 <= SDL_mixer.c
Compile thumb : SDL2 <= SDL_wave.c
Compile thumb : SDL2 <= SDL_androidaudio.c
Compile thumb : SDL2 <= SDL_dummyaudio.c
Compile thumb : SDL2 <= SDL_atomic.c
Compile arm : SDL2 <= SDL_spinlock.c
Compile thumb : SDL2 <= SDL_android.c
Compile thumb : SDL2 <= SDL_cpuinfo.c
Compile thumb : SDL2 <= SDL_dynapi.c
Compile thumb : SDL2 <= SDL_clipboardevents.c
Compile thumb : SDL2 <= SDL_dropevents.c
Compile thumb : SDL2 <= SDL_events.c
Compile thumb : SDL2 <= SDL_gesture.c
Compile thumb : SDL2 <= SDL_keyboard.c
Compile thumb : SDL2 <= SDL_mouse.c
Compile thumb : SDL2 <= SDL_quit.c
Compile thumb : SDL2 <= SDL_touch.c
Compile thumb : SDL2 <= SDL_windowevents.c
Compile thumb : SDL2 <= SDL_rwops.c
Compile thumb : SDL2 <= SDL_haptic.c
Compile thumb : SDL2 <= SDL_syshaptic.c
Compile thumb : SDL2 <= SDL_gamecontroller.c
Compile thumb : SDL2 <= SDL_joystick.c
Compile thumb : SDL2 <= SDL_sysjoystick.c
Compile thumb : SDL2 <= SDL_sysloadso.c
Compile thumb : SDL2 <= SDL_power.c
Compile thumb : SDL2 <= SDL_syspower.c
Compile thumb : SDL2 <= SDL_sysfilesystem.c
Compile thumb : SDL2 <= SDL_d3dmath.c
Compile thumb : SDL2 <= SDL_render.c
Compile thumb : SDL2 <= SDL_yuv_mmx.c
Compile thumb : SDL2 <= SDL_yuv_sw.c
Compile thumb : SDL2 <= SDL_render_d3d11.c
Compile thumb : SDL2 <= SDL_render_d3d.c
Compile thumb : SDL2 <= SDL_render_gles2.c
Compile thumb : SDL2 <= SDL_shaders_gles2.c
Compile thumb : SDL2 <= SDL_render_gles.c
Compile thumb : SDL2 <= SDL_render_gl.c
Compile thumb : SDL2 <= SDL_shaders_gl.c
Compile thumb : SDL2 <= SDL_render_psp.c
Compile thumb : SDL2 <= SDL_blendfillrect.c
Compile thumb : SDL2 <= SDL_blendline.c
Compile thumb : SDL2 <= SDL_blendpoint.c
Compile thumb : SDL2 <= SDL_drawline.c
Compile thumb : SDL2 <= SDL_drawpoint.c
Compile thumb : SDL2 <= SDL_render_sw.c
Compile thumb : SDL2 <= SDL_rotate.c
Compile thumb : SDL2 <= SDL_getenv.c
Compile thumb : SDL2 <= SDL_iconv.c
Compile thumb : SDL2 <= SDL_malloc.c
Compile thumb : SDL2 <= SDL_qsort.c
Compile thumb : SDL2 <= SDL_stdlib.c
Compile thumb : SDL2 <= SDL_string.c
Compile thumb : SDL2 <= SDL_thread.c
Compile thumb : SDL2 <= SDL_syscond.c
Compile thumb : SDL2 <= SDL_sysmutex.c
Compile thumb : SDL2 <= SDL_syssem.c
Compile thumb : SDL2 <= SDL_systhread.c
Compile thumb : SDL2 <= SDL_systls.c
Compile thumb : SDL2 <= SDL_timer.c
Compile thumb : SDL2 <= SDL_systimer.c
Compile thumb : SDL2 <= SDL_blit_0.c
Compile thumb : SDL2 <= SDL_blit_1.c
Compile thumb : SDL2 <= SDL_blit_A.c
Compile thumb : SDL2 <= SDL_blit_auto.c
Compile thumb : SDL2 <= SDL_blit.c
Compile thumb : SDL2 <= SDL_blit_copy.c
Compile thumb : SDL2 <= SDL_blit_N.c
Compile thumb : SDL2 <= SDL_blit_slow.c
Compile thumb : SDL2 <= SDL_bmp.c
Compile thumb : SDL2 <= SDL_clipboard.c
Compile thumb : SDL2 <= SDL_egl.c
Compile thumb : SDL2 <= SDL_fillrect.c
Compile thumb : SDL2 <= SDL_pixels.c
Compile thumb : SDL2 <= SDL_rect.c
Compile thumb : SDL2 <= SDL_RLEaccel.c
Compile thumb : SDL2 <= SDL_shape.c
Compile thumb : SDL2 <= SDL_stretch.c
Compile thumb : SDL2 <= SDL_surface.c
Compile thumb : SDL2 <= SDL_video.c
Compile thumb : SDL2 <= SDL_androidclipboard.c
Compile thumb : SDL2 <= SDL_androidevents.c
Compile thumb : SDL2 <= SDL_androidgl.c
Compile thumb : SDL2 <= SDL_androidkeyboard.c
Compile thumb : SDL2 <= SDL_androidtouch.c
Compile thumb : SDL2 <= SDL_androidvideo.c
Compile thumb : SDL2 <= SDL_androidwindow.c
Compile thumb : SDL2 <= SDL_test_assert.c
Compile thumb : SDL2 <= SDL_test_common.c
Compile thumb : SDL2 <= SDL_test_compare.c
Compile thumb : SDL2 <= SDL_test_crc32.c
Compile thumb : SDL2 <= SDL_test_font.c
Compile thumb : SDL2 <= SDL_test_fuzzer.c
Compile thumb : SDL2 <= SDL_test_harness.c
Compile thumb : SDL2 <= SDL_test_imageBlitBlend.c
Compile thumb : SDL2 <= SDL_test_imageBlit.c
Compile thumb : SDL2 <= SDL_test_imageFace.c
Compile thumb : SDL2 <= SDL_test_imagePrimitivesBlend.c
Compile thumb : SDL2 <= SDL_test_imagePrimitives.c
Compile thumb : SDL2 <= SDL_test_log.c
Compile thumb : SDL2 <= SDL_test_md5.c
Compile thumb : SDL2 <= SDL_test_random.c
SharedLibrary : libSDL2.so
Install : libSDL2.so => libs/armeabi/libSDL2.so
Compile thumb : main <= SDL_android_main.c
Compile thumb : main <= SDL_Lesson.c
SharedLibrary : libmain.so
Install : libmain.so => libs/armeabi/libmain.so :: Build Finished (took 45s.806ms)

后面我们就可以来使用sdl进行开发了

[原]零基础学习SDL开发之移植SDL2.0到Android的更多相关文章

  1. [原]零基础学习SDL开发之在Android使用SDL2.0显示BMP图

    关于如何移植SDL2.0到安卓上面来参考我的上一篇文章:[原]零基础学习SDL开发之移植SDL2.0到Android 在一篇文章我们主要使用SDL2.0来加载一张BMP图来渲染显示. 博主的开发环境: ...

  2. [原]零基础学习SDL开发之在Android使用SDL2.0显示BMP叠加图

    关于如何移植在android上使用SDL,可以参考[原]零基础学习SDL开发之移植SDL2.0到Android 和 [原]零基础学习SDL开发之在Android使用SDL2.0显示BMP图 . 在一篇 ...

  3. [原]零基础学习SDL开发之在Android使用SDL2.0渲染PNG图片

    在上一篇文章我们知道了如何在android使用SDL2.0来渲染显示一张bmp图,但是如果是一张png或者一张jpg的图,那么还能显示成功么?答案是否定的 我们需要移植SDL_image库来支持除bm ...

  4. [原]零基础学习SDL开发之在Android使用SDL2.0加载字体

    在上一篇文章我们知道了如何在android使用SDL2.0来渲染显示一张png图,而且在上上一篇我们知道如何使用sdl来渲染输出bmp图,那么sdl是否可以渲染输出自己喜爱的字体库的字体呢?答案是当然 ...

  5. [原]零基础学习在Android进行SDL开发系列文章

    [原]零基础学习SDL开发之移植SDL2.0到Android [原]零基础学习SDL开发之在Android使用SDL2.0显示BMP图 [原]零基础学习SDL开发之在Android使用SDL2.0显示 ...

  6. [原]零基础学习视频解码之android篇系列文章

    截止今天,<零基础学习视频解码系列文章>.<零基础学习在Android进行SDL开发系列文章>以及<零基础学习视频解码之android篇>系列文章基本算是告一段落了 ...

  7. 【零基础学习iOS开发】【转载】

    原文地址:http://www.cnblogs.com/mjios/archive/2013/04/24/3039357.html 本文目录 一.什么是iOS 二.主流手机操作系统 三.什么是iOS开 ...

  8. 李洪强iOS开发之【零基础学习iOS开发】【01-前言】01-开篇

    从今天开始,我就开始更新[零基础学习iOS开发]这个专题.不管你是否涉足过IT领域,也不管你是理科生还是文科生,只要你对iOS开发感兴趣,都可以来阅读此专题.我尽量以通俗易懂的语言,让每个人都能够看懂 ...

  9. 【零基础学习iOS开发】【01-前言】01-开篇

    本文目录 一.什么是iOS 二.主流手机操作系统 三.什么是iOS开发 四.学习iOS开发的目的 五.学习iOS开发的前提 从今天开始,我就开始更新[零基础学习iOS开发]这个专题.不管你是否涉足过I ...

随机推荐

  1. TYVJ P1933 绿豆蛙的归宿 题解(未完成)

    P1933 「Poetize3」绿豆蛙的归宿 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 随着新版百度空间的上线,Blog宠物绿豆蛙完成了它的使命,去寻找 ...

  2. 9个实用的Javascript代码高亮脚本

    代码高亮很有用,特别是在需要在网站或者blog中显示自己编写的代码的时候,或者给其他人查看或调试语法错误的时候.我们可以将代码高亮,以便阅读者可以十分方便的读取代码块,增加用户阅读代码的良好体验. 目 ...

  3. 前端如何接收 websocket 发送过来的实时数据

    WebSocket protocol 是HTML5一种新的协议,它实现了浏览器与服务器全双工通信(full-duple).刚开始的握手需要借助HTTP请求完成,在 WebSocket API,浏览器和 ...

  4. Thinkphp学习笔记-模板主题

    一个模块如果需要支持多套模板文件的话,就可以使用模板主题功能. 默认情况下,没有开启模板主题功能,如果需要开启,设置 DEFAULT_THEME 参数即可: // 设置默认的模板主题 'DEFAULT ...

  5. 转:从产品经理的角度算一算,做一个app需要花多少钱?

    http://mp.weixin.qq.com/s?__biz=MzA4NTM5MTgzNQ==&mid=400127477&idx=2&sn=6ab90b7028deed78 ...

  6. NGUI系列教程七(序列帧动画)

    今天我给大家讲一下如何使用NGUI做序列帧动画.本节主要包括两方面内容,分别是使用UIspirit和使用UITexture 做序列帧动画.废话不说了,下面开始.还要在啰嗦一句,首先大家要准备一些序列帧 ...

  7. Andrew Ng机器学习笔记+Weka相关算法实现(四)SVM和原始对偶问题

    这篇博客主要解说了Ng的课第六.七个视频,涉及到的内容包含,函数间隔和几何间隔.最优间隔分类器 ( Optimal Margin Classifier).原始/对偶问题 ( Primal/Dual P ...

  8. Oracle Spatial 创建空间表、添加空间原表信息、添加删除空间索引

    一.创建空间表 创建一个空间表tbsvrc_buffer_t ,SQL如下: create table tbsvrc_buffer_t(  ID      VARCHAR2(50) not null, ...

  9. T-SQL 之 视图

    视图实际上就是一个存储查询,重点是可以筛选.组合和匹配来自基本表(或者其他视图)的数据,从而创建在很多方面像另一个基表那样起作用的对象.可以创建一个简单的查询,仅仅从一个表中选择几列,而忽略其他列:或 ...

  10. linux下tar.gz、tar、bz2、zip、 xz、rar等解压缩、压缩命令小结

    http://www.jb51.net/LINUXjishu/43356.html unrar x aa.rarunrar e aa.rarx参数 是解压到一个文件夹里 e参数是把所有文件解压到当前目 ...