从零开始NDK(一)

2014年11月27日

安卓系统结构

在开始NDK之前先来看一下这幅经典的安卓系统结构图。

安卓系统大致分为四个层次——应用层,框架层,运行库层,linux内核层。

  • 应用层:包括安卓系统的各种应用,如电话本,短信等等。
  • 框架层:为上层的应用提供基本的框架。
  • 运行库层:一些基本的C和C++库,如数据库,OpenGL等等。
  • linux内核层:与硬件交互,包括各种驱动。

其中应用层与框架层使用JAVA编写,而运行库层和linux内核层则使用C或者C++。那么当开发者在开发应用的同时,又要使用自己开发的C或C++库时,应该如何做呢?这里要用到JAVA中的一种接口:JNI(Java Native Interface),即Java原生接口。而谷歌在推出Android SDK的同时,也为开发者提供了一种开发工具包:NDK(Native Development Kit),即原生开发包。它可以帮助开发者更方便地使用JNI。

SDK与NDK联合开发应用的流程如图所示:(其中.so文件为打包好的库文件)

NDK环境搭建

前期准备:

  • adt-bundle-windows-x86_64-20140702
  • android-ndk-r10c
  • com.android.ide.eclipse.ndk_23.0.2.1259578.jar

这些是博主用到的版本,这个版本adt的eclipse中并没有提供设置NDK路径的地方,所以要用到ndk插件:http://pan.baidu.com/s/1qWz5rNA,解压密码0qhk。下载到..\adt-bundle-windows-x86_64-20140702\eclipse\plugins\文件夹。

关于JAVA及SDK环境的搭建,这里不再阐述,直接进入NDK部分。

启动eclipse,在Windows-Prefrence-Android-NDK这里设置已下载的NDK的路径。

接下来在环境变量PATH下追加%NDK_ROOT%:

NDK HelloWorld

接下来我们来测试一下NDK工程。

File-Import-Existing Android Code Into Workspace

选择..\android-ndk-r10c\samples\hello-jni,把tests勾掉,Finish。

右键工程-Android Tools-Add Native Support-填写Library Name(默认为HelloJni)-Finish

右键工程-Run As-Android Application 运行,查看效果。

未完待续