Android NDK入门开发实例
1、首先新建一个项目,在布局页面添加一个按钮即可,如下图所示,图中有两个控件,一个是textview,另一个是button。


2、新建一个类,并写一个native方法,我写的方法是,public native int add(int a, int b);实现传入的2个整形数字相加,这里的native方法不需要实现

3、打开本次项目的路径,里面有2个类,其中JNITest.java便是有native方法的类,下面需要先把这个java编程成class文件然后再编译成.h头文件。

1、在CMD中依次输入以下代码:
cd C:\Users\Administrator\workspace\JNITest\src(切换到项目的src目录下)
javac com\liutaw\jnitest\JNITest.java(编译有native方法的java类)
javah com.liutaw.jnitest.JNITest(从class生成.h头文件)


2、在项目的根目录新建一个jni文件夹,并把刚才javah生成的 com_liutaw_jnitest_JNITest.h文件复制到jni目录下

3、打开com_liutaw_jnitest_JNITest.h,把定义的方法都改为实现,并把文件名的后缀名改为.c,注意方法的参数要加上,以下是修改前后的对比图。

4、在jni文件夹下新建一个Android.mk文件,输入以下内容,注意更改成你自己的库文件名和原文件名称
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hellojni(库文件名)
LOCAL_SRC_FILES := com_liutaw_jnitest_JNITest.c(原文件名称)
include $(BUILD_SHARED_LIBRARY)
2个文件完成之后应该是下面这张图。


5、之后打开Cygwin(windows没有?请下载,linux等用户自带终端即可,这是模拟Linux运行环境用的),先切换到自己的项目目录,再使用命令ndk-build一下,出现以下字幕,说明生成.so文件(类似于windows的dll动态链接库文件)成功,也就是说,以后java代码可以调用自己写的c方法了。

1、在JNITest类中写一个静态代码块:
static {
System.loadLibrary("hellojni");
}
hellojni是和刚才写的Android.mk“LOCAL_MODULE := hellojni”是一致的

2、在按钮的监听事件里写入自己的方法,我这里写的作用是,调用native代码之后把值显示在TextView上面。

3、生成一下项目,我用的是真机调试,我们现在可以看效果了,点击按钮之后数字4便显示在了TextView上面。
