基于Android NDK开发实践案例解析

本案例主要介绍如何利用NDK工具在Android上进行C/C++相关开发,通过生成的JNI接口,编写C/C++函数,编译生成so库,并调用so库,在Android应用层上实现int型加法操作,字符串显示操作和往/sdcard中文件yao.txt写入数据操作。

1:案例分析

在进行Android本地项目开发时,我们需要用到自己的底层函数(.c或.cpp文件)和相关so库,Google提供的NDK开发工具可以帮助我们解决这个问题,按照相关开发流程,我们可以在Android开发项目中调用本地的so库,实现本地开发模块。

2:开发环境

a:Eclipse (Galileo版本)
b:Android sdk 2.2 (注:NDK开发要求sdk 1.5以上版本)
c:jdk1.6
d:Android-ndk-r17b(注:这是最新版本ndk,这个版本是不需要用到cygwin工具,推荐使用此版本

(注:2、3和4都需要配置环境变量,这个特别提醒一下。配置好以后可以在cmd输入相关命令测试一下环境变量是否配置成功。)

3:新建Android工程

这个比较简单,按照步骤一步一步就可以,这里需要继承Activity (底层的操作要在Activity上显示)。

基于Android NDK开发实践案例解析

4:编写native方法

这里编写三个native方法,第一个用于int型加法操作,第二个用于字符串操作,第三个用于向/sdcard的yao.txt文件中写入数据。

publicclass NDKTest {

//加法native方法

publicnativeint jniAdd(int a,int b);

//文本显示native方法

publicnative String jniGetString();

//向/sdcard中写入文件native方法

publicnativevoid jniWrite();

//三种方法通过libNDKDev-jni.so库文件来实现

static

{

System.loadLibrary("NDKDev-jni");

}

}

5:生成.h文件

在cmd模式下,进入工程下的bin文件目录,执行javah命令,如下图所示

基于Android NDK开发实践案例解析

从上图可以看到,生成了org_yao_ndk_NDKTest.h文件,进入此文件看看生成了哪些JNI接口,如下图所示:

基于Android NDK开发实践案例解析

从上图可以看到,生成了3个相应的JNI接口,注意其命名方式,Java_org_yao_NDKTest_Method。

6:编写.c文件

基于Android NDK开发实践案例解析

按照要求,编写相应的.c文件(.cpp文件也是可以的)注.c文件不需要同.h文件名字一样,而且上面生成的.h文件到此已经没有什么价值了,可以直接删掉。不过.c文件里面需要#include <jni.h>头文件。

7:编写Android.mk配置文件

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := NDKDev-jni

LOCAL_SRC_FILES := NDKTest.c

include $(BUILD_SHARED_LIBRARY)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/7a7383882207b73b4bf2b957f693ec5f.html