Eclipse集成Android NDK说明

2          为什么要用NDK?

以下内容引用自《Pro Android Games》

Some Java developers simply dismiss other languages, especially procedurallanguages like C. I believe

that you should embrace the elegant object oriented features of Java andthe raw power of C and there is

nothing you cannot do in the gaming world.

翻译过来就是:一些Java开发者摒弃了像C一类的过程化语言,但是要知道美女和野兽的结合是最完美的。

相比起Android的开源项目而言,C世界已经积累了很多可供复用的开源项目(包括很多著名的游戏如Quake、DOOM),在执行效率上涉及到大量数学运算的部分也可以考虑由C完成。

3          为什么要集成?

首先考虑一下为什么不集成?

一般来说,集成可以带来快捷,当然,如同IDE一样,集成会让你的脑子退化,好处就是你可以挤出更多的时间去YY。

4          怎样操作?

4.1         预备条件

4.1.1  Cygwin

如果你工作在Windows环境而又不想使用linux环境,可以安装cygwin(http://www.cygwin.com/ ),为了使用gcc注意cygwin的必选安装包在devel目录下:binutils,gcc,make

Cygwin的更多细节可以从网上获取。

总之,安装完成以后,运行cygwin的快捷方式,在控制台输入命令 gcc和make,有合理的反馈即可(不是SB的command notfound),证明你就可以在伪造的linux下开始造人计划了。

我在cygwin里面加了个环境变量,你也可以考虑加一下,后面方便(写你自己的目录哦):

ANDROID_NDK_ROOT=/cygdrive/e/software/android/android-ndk-r4

export ANDROID_NDK_ROOT

4.1.2  Eclipse

我用的是Galileo版,你的呢?

4.1.3  Eclipse CDT

CDT,就是Eclipse的C/C++环境,在线安装地址 http://download.eclipse.org/tools/cdt/releases/galileo

其实我运行一个NDK的例子工程后发现,CDT并不是必须的,不过至少安装CDT后并没有什么坏处,在以后你想尝试QT之类的东东的时候,可以免去这个安装步骤。

4.1.4  Android SDK

主题不是NDK么,为什么要SDK?

NDK是core(音:靠),SDK是壳,或者说SDK给NDK喂草,NDK挤出的是奶。

4.1.5  Android NDK

我下载的是http://dl.google.com/android/ndk/android-ndk-r4-windows.zip最新的版本,下载完解压到一个目录即可,我的是E:\software\android\android-ndk-r4。

以上步骤中,略麻烦的就是cygwin的安装,没有经验的估计要辗转几次。

4.2         开始集成

4.2.1  新建工程

运行Eclipse,新建一个android project,取名hello-jni(或者你喜欢的其他比如fxxk-jni也行)。

工程代码就从你的NDK/samples/hello-jni拷贝一份即可,记得拷贝jni那个目录,最终的目录结构如图。

Libs目录一会会自动创建,现在木有也没关系。

如果你现在运行这个工程,就会在android控制台看到如下错误:

java.lang.UnsatisfiedLinkError:Library hello-jni not found

因为你还没有造出那个libhello-jni.so出来。

4.2.2  工程属性

打开hello-jni工程属性,选择builder,选择program,点OK

配置如下,名字随便取一个,location和working directory要和你的cygwin目录一致,arguments要和你的工程目录一致。

我的arguments是:--login -c "cd/cygdrive/e/workspace/hello-jni && $ANDROID_NDK_ROOT/ndk-build"

上面的图片应该看得清吧,然后勾选其他配置如下

注意在勾选Specifyworking set of relevant resources时指定资源选择你的工程的jni目录即可。

当以上步骤都正确配置无误,保存配置后应该就会自动编译jni目录下的C相关代码并输出相应的.so库文件到工程的libs目录下,libs目录会自动创建。

编译时控制台输出类似如下:

再运行工程,结果正确。

以后修改了C代码,保存后也会自动触发编译,省时省力。

最新文章

  1. Kubernets搭建Kubernetes-dashboard
  2. 安装ionic出现node-sass无法下载的解决方法
  3. tkinter 的两个例子
  4. 普华永道高级JAVA面试记录
  5. 框架模式 MVC 在Android中的使用
  6. MVC4 导出word
  7. 将decimal类型的数值后面的0和.号去掉
  8. PC110305/UVA10188
  9. MapReduce调度与执行原理之作业初始化
  10. flask中下载服务器上特定路径的文件
  11. 关于学习MMU的一点感想
  12. Mac安装python3.x+pycharm+elasticsearch+常见报错处理(1)
  13. 算法:输出一个整数(不用ToString方法)
  14. window7 32位部署django
  15. 11、TopN实战
  16. python __get__ & __set__
  17. [PHP]误读支付宝接口可能引发的乌龙
  18. JS-基础动画心得
  19. 牛刀小试MySQL--基于GTID的replication
  20. 在VirtualBox虚拟机中安装Centos操作系统怎么与本地XShell远程连接

热门文章

  1. 激活第一个CPU
  2. 【Unity Shader】新书封面 — Low Polygon风格的渲染
  3. Visual Studio 写自己的动态链接库(DLL)
  4. pdflush的工作原理
  5. Spark技术内幕:Shuffle Pluggable框架详解,你怎么开发自己的Shuffle Service?
  6. RxJava操作符(07-辅助操作)
  7. MTK8127编译sdk出错解决方法
  8. Java多线程的调度策略
  9. Cocos2D两个方法的重构一例
  10. Android开发学习之路--Activity之四种启动模式