NDK编译SDL

准备:

硬件

一台电脑,实验在Lenovo T430上

一个Android设备,实验在 三星S3/A7

编译环境:

Ubuntu 14.04 (ant\java等命令必须支持)

工具包:

NDK:
https://dl.google.com/android/ndk/android-ndk32-r10b-linux-x86_64.tar.bz2

SDK:https://dl.google.com/android/adt/adt-bundle-linux-x86_64-20140702.zip

SDL:http://www.libsdl.org/release/SDL2-2.0.3.tar.gz

步骤:

解压SDL:

tar -xvzf
SDL2-2.0.3.tar.gz

cd
~/Work/study/ffmpeg/SDL2-2.0.3

解压NDK,SDK

SDK路径:/opt/adrd-stuff/adt-bundle-linux-x86_64-20130514/sdk

NDK路径:/opt/adrd-stuff/android-ndk-r10b

编译过程很简单,有下面两种方式:(请认真阅读SDL2-2.0.3/README-android.txt)

1.直接编译SDL里面的一个例子:

2.自己定义一个APK

1.直接编译SDL里面的一个例子,两步:

(1).配置build-scripts/androidbuild.sh里面的两个路径,如下:

#NDKBUILD=`which
ndk-build`

NDKBUILD="/opt/adrd-stuff/android-ndk-r10b/ndk-build"

#ANDROID=`which
android`

ANDROID="/usr/local/share/adt-bundle-linux-x86_64-20140702/sdk"

(2).
直接运行命令

cd build-scripts

./androidbuild.sh
org.libsdl.testgles ../test/testgles.c

2. 自己定义一个APK

cd
android-project/jni/src/

仿照test/testgles.c,写一个含有main函数的c文件YourSourceHere.c

实验可以直接拷贝,
依次执行下面命令:

###pwd:
android-project/jni/src/

cp
../../../test/testgles.c YourSourceHere.c

cd ../jni

ln -s
/home/zhou/Work/study/ffmpeg/SDL2-2.0.3/ SDL

/opt/adrd-stuff/android-ndk-r10b/ndk-build

cd ..

ant debug

这时会在bin/

运行APK:

adb install
../SDL2-2.0.3/build/org.libsdl.testgles/bin/org.libsdl.testgles-debug.apk

adb install
../SDL2-2.0.3/android-project/bin/SDLActivity-debug.apk

遇到的问题:

NDK版本:

32bits小机用:android-ndk32-r10b-linux-x86_64.tar.bz2

64bits小机用:android-ndk64-r10b-linux-x86_64.tar.bz2

64bits编译出来的APK在S3上面运行,会有闪退的现象,

logcat提示如下:

E/dalvikvm(15444):
dlopen("/data/app-lib/org.libsdl.app-1/libSDL2.so") failed:
dlopen failed: cannot locate symbol "signal" referenced by
"libSDL2.so"...

W/dalvikvm(15444):
Exception Ljava/lang/UnsatisfiedLinkError; thrown while initializing
Lorg/libsdl/app/SDLActivity;

W/dalvikvm(15444):
Class init failed in newInstance call (Lorg/libsdl/app/SDLActivity;)

E/AndroidRuntime(15444):
Process: org.libsdl.app, PID: 15444

E/AndroidRuntime(15444):
at org.libsdl.app.SDLActivity.<clinit>(SDLActivity.java:49)

W/ActivityManager(
837): Force finishing activity org.libsdl.app/.SDLActivity

一个小玩具:NDK编译SDL的例子的更多相关文章

  1. 一个小玩具:NDK编译FFmpeg的例子

    FFmpeg NDK编译 和最简单的APK 准备 硬件: 一台电脑,实验在Lenovo T430上 一个Android设备,实验在 三星S3/A7 编译环境: Ubuntu 14.04 (ant\ja ...

  2. Cocos2d-x第一个坑,NDK 编译环境

    这些天搭建windows cocos2d-x的环境,基本上崩溃到死.目前好转.终于可以编译通过: 生成模板工程:在cmd下进入cocos2d-x的主目录,D:\Android\cocos2d-x-2. ...

  3. 一个小玩具:Python调用Mysql

    1. ubuntu安装MySQL how to install:$ sudo apt-get install mysql-server$ sudo apt-get install mysql-clie ...

  4. Windows下编译SDL

    Windows下编译SDL的理由我就不多说了,无论用VS来编译或调试SDL库都是很方便的.而且SDL源代码中也包含了VC工程,你所要做的只是解压VC工程,进行适当的配置,然后编译.调试. 编译SDL大 ...

  5. java连接mysql的一个小例子

    想要用java 连接数据库,需要在classpath中加上jdbc的jar包路径 在eclipse中,Project的properties里面的java build path里面添加引用 连接成功的一 ...

  6. java操作xml的一个小例子

    最近两天公司事比较多,这两天自己主要跟xml打交道,今天更一下用java操作xml的一个小例子. 原来自己操作xml一直用这个包:xstream-1.4.2.jar.然后用注解的方式,很方便,自己只要 ...

  7. MVVM模式的一个小例子

    使用SilverLight.WPF也有很长时间了,但是知道Binding.Command的基本用法,对于原理性的东西,一直没有深究.如果让我自己建一个MVVM模式的项目,感觉还是无从下手,最近写了一个 ...

  8. 关于SVN配置文件的一个小例子

    1   背景假设 厦门央瞬公司是一家电子元器件设备供应商,其中有个ARM部门,专门负责ARM芯片的方案设计.销售,并在北京.上海各设立了一个办事处.对于工作日志,原先采用邮件方式发给经理,但是这种方式 ...

  9. 使用Trinity拼接以及分析差异表达一个小例子

    使用Trinity拼接以及分析差异表达一个小例子  2017-06-12 09:42:47     293     0     0 Trinity 将测序数据分为许多独立的de Brujin grap ...

随机推荐

  1. MemCached高级缓存

    MemCached高级缓存配置 Memcache相关介绍: memcache 是一个高性能的分布式的内存对象缓存系统,它能够存储各种各样的的数据,包括图片,视频,文件等等.缓存功能. DB.数据源-- ...

  2. d008: 求两数的整数商 和 商

    内容: 求两数的整数商 和 商 ,商保留两位小数 输入说明: 一行 两个整数 输出说明: 一行,一个整数,一个实数(两位小数) 输入样例:   12 8 输出样例 : 1 1.50 #include ...

  3. HttpClient支持使用代理服务器以及身份认证

    HttpClient Authentication Doument: http://hc.apache.org/httpclient-3.x/authentication.html HttpClien ...

  4. AltiumDesigner14板框定义及3D显示图文教程

    很多人都跟我反应说AD14不能定义板框大小,或者说是不知道怎么定义板框的大小,确实AD14的操作和AD13或者是AD10的版本斗有一些差异,尤其是现在最新的版本AltiumDesigner14.3.1 ...

  5. 热爱工作 发财机会大增(这里不是选择软件还是硬件的问题,是自己的性格和追求的问题)——当你的老板不如你懂行的时候,还赚的盆满钵满的时候,你就可以考虑独立了 good

    爱工作 发财机会大增 [ 油老板 ] 于:2011-02-09 06:39:41 复:1269077 认真回顾发主贴以来的三年半,俺觉得对于想发财的上班族来说,认真工作,刻苦钻研是发财的重要保证. 为 ...

  6. 迅雷程浩:企业外包服务,下一个大的风口?(2B业务一定要懂销售和营销的人,这点和2C 不一样)

    我今年暑假去了趟硅谷,一天去一个朋友的公司拜访,发现这公司没有前台,前台桌子上放了一个显示器.我刚进去,显示器里的老印就跟我打招呼 "How may I help you?" 事后 ...

  7. LinkedList和ArrayList的区别

    LinkedeList和ArrayList都实现了List接口,但是它们的工作原理却不一样.它们之间最主要的区别在于ArrayList是可改变大小的数组,而LinkedList是双向链接串列(doub ...

  8. 查询Linux系统最后重启时间的三个方法

    对于在Linux平台开发或运维的工程师来说,经常需要查询系统最后一次重启的时间,这篇文章将给大家介绍三种方法: 方法一:last命令 # last rebootreboot system boot 2 ...

  9. Java实现生命周期管理机制

    先扯再说 最近一直在研究某个国产开源的MySQL数据库中间件,拉下其最新版的代码到eclipse后,启动起来,然后做各种测试和代码追踪:用完想要关闭它时,拉出它的STOP类想要运行时,发现这个类里赫然 ...

  10. Java 反射机制详解

    动态语言 动态语言,是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等在结构上的变化.比如众所周知的ECMAScript(JavaScript)便是一个动态语言.除此之外如Ru ...