您的位置:首页 > 移动开发 > Android开发

关于将SDL及其扩展库移植到Android平台的一些看法

2013-08-30 00:44 459 查看
关于将SDL及其扩展库移植到Android平台的一些看法
从SDL1.3开始,已经官方支持SDL到Android移植,一个显著的标志是提供了可以通过NDK编译的Android.mk文件。文件中指明了SDL在Android平台工作需要编译那些文件,以及其他的一些编译规则。你可以到SDL的官网下载源码自己编译。编译方法在 SDL-1.3\jni\README.android内说的很清楚,显然SDL官方在这一点上做的很好,提供了各种平台以及不同的编译环境下的自述文件,让各色开发者可以找到适合自己的编译方法,但文件太多也容易造成干扰,当然这种干扰不是技术上的,而是耐心上的,不过事实证明,耐心上的缺陷才是致命的,它可能是造成失败的根本原因。
这里稍微讲一下移植的方法:
首先你要得到这样一个目录结构

android-project
  |-jni
  |  |-src
  |  |-Android.mk
  |   \

  |-res
  |-src
  |-AndroidManifest.xml
  |-build.xml
  |-build.properties
  |-local.properties
   \
这里我们真正关心的是jni文件夹。在你下载到的SDL源码压缩包(假设是SDL-1.3)解压以后,SDL-1.3\jni路径下就包含了上面的那个android-project文件夹。我们需要把它复制出来,放到如意路径下,如f:\android-project,再到SDL-1.3\jni下把SDL文件夹复制出来,放到

f:\android-project下,这样在f:\android-project里就是这样的结构
android-project
  |-jni
  |  |-src
  |  |-Android.mk①
  |  |-SDL-|-(源码,文档,配置文件,其他)
  |  |
   |-Android.mk②
  |   \     \
  |-res
  |-src
  |-AndroidManifest.xml
  |-build.xml
  |-build.properties
  |-local.properties
   \

可以看到上面有两处Android.mk文件,这是保证移植成功的一个关键。①很简单里面只有一句:include $(call all-subdir-makefiles),这表示执行它所在目录下所有子目录内的Android.mk,也就是说,是它“启动”了②,而②才是真正编译SDL的所在,②里包括了应该编译什么文件,最终生成什么模块等等。当然①意义不止于此,它几乎可以说是一个“模板”,因为当你想将别的什么C/C++项目集成进进来,只需在\jni目录下建立相应的子文件夹,然后为你要集成的项目编写一个合适的Android.mk就可以了。所有如果你要移植SDL_image,那么你只需得到下面一个结构:
android-project
  |-jni
  |  |-src
  |  |-Android.mk①
  |  |-SDL-|-(源码,文档,配置文件,其他)
  |  |     |-Android.mk②
  |  |      \
  |  |
  |  |-SDL_image-|-(源码,文档,配置文件,其他)
  |   \          |-Android.mk
  |               \
  |-res
  |-src
  |-AndroidManifest.xml
  |-build.xml
  |-build.properties
  |-local.properties
   \

然后用Cygwin对这个项目用ndk-build即可,其他的SDL扩展库或其他C/C++项目以此类推。
至此,你在移植SDL及其扩展库时唯一需要做的就是去修改源代码中与Android平台不相适应的代码以及编写一个合适的Android.mk文件,而如何编译它们已不再是一个问题。最后强调一点还是耐心,因为技术终有提高之时,而有恒心有耐心决定了一个人能走多远。

(PS:以上只是小弟个人愚见,其中错漏望大家不吝指出,有任何疑问也可提出,大家共同探讨,谢谢)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android平台 sdl 移植