一个小玩具:NDK编译SDL的例子
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的例子的更多相关文章
- 一个小玩具:NDK编译FFmpeg的例子
FFmpeg NDK编译 和最简单的APK 准备 硬件: 一台电脑,实验在Lenovo T430上 一个Android设备,实验在 三星S3/A7 编译环境: Ubuntu 14.04 (ant\ja ...
- Cocos2d-x第一个坑,NDK 编译环境
这些天搭建windows cocos2d-x的环境,基本上崩溃到死.目前好转.终于可以编译通过: 生成模板工程:在cmd下进入cocos2d-x的主目录,D:\Android\cocos2d-x-2. ...
- 一个小玩具:Python调用Mysql
1. ubuntu安装MySQL how to install:$ sudo apt-get install mysql-server$ sudo apt-get install mysql-clie ...
- Windows下编译SDL
Windows下编译SDL的理由我就不多说了,无论用VS来编译或调试SDL库都是很方便的.而且SDL源代码中也包含了VC工程,你所要做的只是解压VC工程,进行适当的配置,然后编译.调试. 编译SDL大 ...
- java连接mysql的一个小例子
想要用java 连接数据库,需要在classpath中加上jdbc的jar包路径 在eclipse中,Project的properties里面的java build path里面添加引用 连接成功的一 ...
- java操作xml的一个小例子
最近两天公司事比较多,这两天自己主要跟xml打交道,今天更一下用java操作xml的一个小例子. 原来自己操作xml一直用这个包:xstream-1.4.2.jar.然后用注解的方式,很方便,自己只要 ...
- MVVM模式的一个小例子
使用SilverLight.WPF也有很长时间了,但是知道Binding.Command的基本用法,对于原理性的东西,一直没有深究.如果让我自己建一个MVVM模式的项目,感觉还是无从下手,最近写了一个 ...
- 关于SVN配置文件的一个小例子
1 背景假设 厦门央瞬公司是一家电子元器件设备供应商,其中有个ARM部门,专门负责ARM芯片的方案设计.销售,并在北京.上海各设立了一个办事处.对于工作日志,原先采用邮件方式发给经理,但是这种方式 ...
- 使用Trinity拼接以及分析差异表达一个小例子
使用Trinity拼接以及分析差异表达一个小例子 2017-06-12 09:42:47 293 0 0 Trinity 将测序数据分为许多独立的de Brujin grap ...
随机推荐
- Spark保存到HDFS或本地文件相关问题
spark中saveAsTextFile如何最终生成一个文件 http://www.lxway.com/641062624.htm 一般而言,saveAsTextFile会按照执行task的多少生成多 ...
- 01 - 概述 VTK 6.0 迁移
摘要 对vtk版本4和5的管道机制重新架架构的主要目的是:迁移数据对象和算法对象中的管道执行逻辑到一个新集合的类中,我们称这个集合类叫executives.分离数据和执行模型的代码后,可以双双简化修改 ...
- uva 714 Copying Books(二分法求最大值最小化)
题目连接:714 - Copying Books 题目大意:将一个个数为n的序列分割成m份,要求这m份中的每份中值(该份中的元素和)最大值最小, 输出切割方式,有多种情况输出使得越前面越小的情况. 解 ...
- BZOJ1725: [Usaco2006 Nov]Corn Fields牧场的安排
1725: [Usaco2006 Nov]Corn Fields牧场的安排 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 400 Solved: 290 ...
- Spring-mvc junit单元测试中 如何回滚?
@RunWith(SpringJUnit4ClassRunner.class) @WebAppConfiguration(value = "src/main/webapp") @C ...
- 黑马程序员_<<IO流基本操作(Writer,Reader)>>
--------------------ASP.Net+Android+IOS开发..Net培训.期待与您交流! -------------------- 1.概述 硬盘之间的文件的传输,硬盘中文件的 ...
- OC基础:block.字面量
block 块语法,能够用block去保存一段代码,或者封装一段代码. block 实际是由c语言实现的,运行效率非常高. block 实际借鉴了函数指针的语法. block (^)(參数类型1 參数 ...
- android学习——GestureDetector.OnGestureListener 详解
Android Touch Screen 与传统Click Touch Screen不同,会有一些手势(Gesture),例如Fling,Scroll等等.这些Gesture会使用户体验大大提升.An ...
- 解决从github下载web的源代码部署到eclipse的问题
2015年6月2日 天气晴 github官网:https://github.com/ 以下以pdf.js作为案例说明:https://github.com/mozilla/pdf.js 1).点击案例 ...
- 坑爹的vector iterators incompatible错误(VS中属性页-->C/C++-->代码生成-->>运行库)
之前一直被这个错误折磨着,就是不知道问题在那,后来找了很多资料,大概都是说这是因为多个线程同时操作vector的问题(参考这里).可是我这里的代码并没有问题,因为同样的代码在别的解决方案中已经成功运行 ...