NDK 开发环境搭建

来源:互联网 发布:p2p网络借贷平台诈骗 编辑:程序博客网 时间:2024/06/11 13:05

JAVA开发中,我们经常要用到JNI机制,去调用一些已经实现了的库,以便代码复用,不必重新实现。

NDK(Native Development Kit)。Android 常见开发方式是Java 封装的库,而这些库的底层是由C 或 C++ 实现的。NDK 是Google 公司推出的帮助Android 开发者通过C/C++ 本地语言编写应用的开发包,其包含C / C++ 头文件,库文件,示例代码。目前NDK提供的库函数功能有限,仅仅用于处理那些算法敏感的问题,比如图像处理,大数据量计算等。当然,一些底层本身已经用本地代码实现,我们也可以采用NDK技术运用到Android 开发中来。

网上有很多讨论NDK 和 JNI 的区别的文档,大家可以去看看。但是我认为二者最大的区别在于 NDK 相较 JNI 多了一个 将 .so 文件打包到APK的工具。而JNI 并没有提供打包功能,其只是将 .so 文件放到文件特定位置。而且NDK开发环境提供交叉编译的功能,为确保我们开发的应用能够正确安装在手机上,必须采用对应ARM架构来编译,因此,在PC端开发必须采用交叉编译工具。NDK 集成了交叉编译器,并提供了相应的mk 文件隔离CPU、平台、ABI 等差异,开发人员只需要简单修改mk 文件(指出“哪些文件需要编译”、“编译特性要求”等),就可以创建出so。NDK 可以自动地将so 和Java 应用一起打包,极大地减轻了开发人员的打包工作。比较简单的说,NDK是一套交叉编译工具,它可以帮你把你用C或C++书写的代码,编译为.so(类似与win下的.dll)格式的文件,使你可以在你的Android程序当中用Java语言(JNI)调用这些代码。

工欲善其事必先利其器,下面介绍下 NDK Cygwin CDT 集成开发环境的搭建。

一、Cygwin 安装

1、官网下载Cygwin,安装。

注意: 安装过程中选择镜像站点。选择要下载的站点,我用的是http://mirrors.kernel.org/,速度感觉还挺快,选择后点下一步。

选择要下载的包的名称。为了避免全部下载,这里列出了后面开发NDK用得着的包:autoconf2.1automake1.10binutilsgcc-coregcc-g++gcc4-coregcc4-g++gdbpcrepcre-develgawkmake共12个包。

2、安装好后。运行cygwin,在弹出的命令行窗口输入:cygcheck -c cygwin命令,会打印出当前cygwin的版本和运行状态,如果status是ok的话,则cygwin运行正常。 然后依次输入gcc –versiong++ --versionmake –versiongdb –version进行测试,如果都打印出版本信息和一些描述信息,非常高兴的告诉你,你的cygwin安装完成了!

二、配置NDK环境变量

下载 android-ndk-r8b-windows.zip 解压放到 e 盘根目录下,具体配置过程如下:

1、首先找到cygwin的安装目录,找到一个home\<你的用户名>\.bash_profile文件,我的是:E:\cygwin\home\Administrator\.bash_profile。

有时候会碰到home文件夹下没有子文件的情况。这时,直接 cp /cygwin/etc/skel/.bashrc  ~ 即可。查看下 ~ 对应目录。

2、打开bash_profile文件,添加NDK=/cygdrive/<你的盘符>/<android ndk 目录> 例如:

         NDK=/cygdrive/e/android-ndk-r8

         export NDK

(NDK 这个名字是随便取的,为了方面以后使用方便,选个简短的名字,然后保存)

3、打开cygwin,输入cd $NDK,如果输出上面配置的/cygdrive/e/android-ndk-r8信息,则表明环境变量设置成功了。

三、用NDK来编译应用程序

1、  现在我们用安装好的NDK来编译一个简单的程序吧,我们选择ndk自带的例子hello-jni,我的位于E:\android-ndk-r8\samples\hello-jni(根据你具体的安装位置而定),

2、 运行cygwin,输入命令cd /cygdrive/e/android-ndk-r8/samples/hello-jni,进入到E:\android-ndk-r8\samples\hello-jni目录。

3、 输入$NDK/ndk-build,执行成功后,它会自动生成一个libs目录,把编译生成的.so文件放在里面。($NDK是调用我们之前配置好的环境变量,ndk-build是调用ndk的编译程序)

4、  此时去hello-jni的libs目录下看有没有生成的.so文件,如果有,你的ndk就运行正常啦!

生成之后,这时候可以再用ndk的samples里边的例子生成eclipse工程了.

四、Eclipse 安装CDT 插件

去Eclipse 官网查看CDT 插件,发现其提供两种安装方式。

1、直接下载安装包

2、在线安装

我们选择在线安装方式,在Eclipse ——》Help ——》 Install  选项中,添加地址http://download.eclipse.org/tools/cdt/releases/juno ,安装完毕,OK!

五、配置Eclipse 中工程可直接编译C/C++代码成库文件并构建整个android 工程

这个需要在Properties ——》 Builders 中进行设置,这样每一个工程都得设置,个人感觉过程还是比较麻烦,还不如就直接开发好C代码,编译成SO库文件后,然后再倒入JAVA工程中。大家有兴趣的话,去网上GOOGLE下,照着做就OK了,这里不再赘述。

 参考方法地址:http://www.cnblogs.com/luxiaofeng54/archive/2012/03/13/2136982.html

原创粉丝点击