| 
  1.打开eclipse新建一个android的工程,就叫"MyFirstJNI"吧。建立后添加一个class文件作为jni的接口,我是这样添加的  
 在该类中添加如下代码:都是一些很简单的函数^^ [size=1em][backcolor=rgb(108, 226, 108) !important][color=white !important][size=1em] ? 
[size=1em]1 
[size=1em]2 
[size=1em]3 
[size=1em]4 
[size=1em]5 
[size=1em]6 
[size=1em]7 
 | [size=1em][size=1em]package com.example.myjni; 
 
[size=1em]public class JNI { 
[size=1em]    public native void write(); 
[size=1em]    public native String sayHello(); 
[size=1em]    public native int plus(int a, int b); 
[size=1em]} 
 
  |  
  
 
这个就是native code在java中的接口了。添加完成后,build project。第一步的准备工作就此完成,很容易吧。     2.打开cmd并定位到刚刚新建的"MyFirstJNI"工程目录下的bin/classes目录,执行”javah -classpath .  -jni  com.example.myjni.JNI“,没有意外的话,bin/classes目录下应该会产生一个com_example_myjni_JNI.h文件。这个就是native code需要实现的函数了。   
     3.现在我们把刚刚得到的.h文件拷贝出,为它新建一个工程,我是手工建立的。建立D:\MyfirstJNISO目录,并建立子目录jni(必须叫这个,否则后面会不能编译哦),并将.h文件拷贝到该目录下,并新建一个com_example_myjni_JNI.c文件实现相关函数,代码如下: [size=1em][backcolor=rgb(108, 226, 108) !important][color=white !important][size=1em] ? 
[size=1em]1 
[size=1em]2 
[size=1em]3 
[size=1em]4 
[size=1em]5 
[size=1em]6 
[size=1em]7 
[size=1em]8 
[size=1em]9 
[size=1em]10 
[size=1em]11 
[size=1em]12 
[size=1em]13 
[size=1em]14 
[size=1em]15 
[size=1em]16 
[size=1em]17 
[size=1em]18 
[size=1em]19 
[size=1em]20 
[size=1em]21 
[size=1em]22 
[size=1em]23 
[size=1em]24 
[size=1em]25 
[size=1em]26 
[size=1em]27 
[size=1em]28 
[size=1em]29 
[size=1em]30 
[size=1em]31 
[size=1em]32 
 | [size=1em][size=1em]#include <string.h> 
[size=1em]#include "com_example_myjni_JNI.h" 
 
 
 
[size=1em]JNIEXPORT void JNICALL Java_com_example_myjni_JNI_write 
[size=1em]  (JNIEnv *env, jobject thiz) 
[size=1em]  { 
[size=1em]      
[size=1em]  } 
 
[size=1em]/* 
[size=1em] * Class:     com_example_myjni_JNI 
[size=1em] * Method:    sayHello 
[size=1em] * Signature: ()Ljava/lang/String; 
[size=1em] */ 
[size=1em]JNIEXPORT jstring JNICALL Java_com_example_myjni_JNI_sayHello 
[size=1em]  (JNIEnv *env, jobject thiz) 
[size=1em]{ 
[size=1em]    return (*env)->NewStringUTF(env, "Hello from JNI !"); 
[size=1em]} 
 
[size=1em]/* 
[size=1em] * Class:     com_example_myjni_JNI 
[size=1em] * Method:    plus 
[size=1em] * Signature: (II)I 
[size=1em] */ 
[size=1em]JNIEXPORT jint JNICALL Java_com_example_myjni_JNI_plus 
[size=1em]  (JNIEnv *env, jobject thiz, jint a, jint b) 
[size=1em]  { 
[size=1em]    return a+b; 
[size=1em]  } 
 
  |  
  
 
 接着还需要同一个目录下添加一个Android.mk文件,编译时候使用,具体内容如下: LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE    := first_jni                                 (最终so文件名是libfirst_jni.so) LOCAL_SRC_FILES := com_example_myjni_JNI.c       (代码) include $(BUILD_SHARED_LIBRARY) 是不是很麻烦,不过我们已经离成功越来越近了。     3.现在整理一下,我们到目前为止的工作,新建了一个android工程以及一个C的工程(暂且叫工程吧),现在开始最重要的一步,编译c代码生成.so文件让android工程中的调用。你现在应该已经配置好了cygwin了吧,打开吧,定位到C工程目录,比如D:\myfirstJNISO的话就执行”cd /cygdrive/D/myfirstJNISO“,然后执行”$NDK/ndk-build “(其中$NDK和你配置的cygwin有关)。   
 这样编译的工作就完成了,如果你前面没有犯任何错的话。赶紧打开C工程目录吧应该是这样的吧   
 黄色标记的目录就是我们需要的东西哦,里面是一个”armeabi“文件夹,里面是编译得到的.so文件。     final.将上面的armeabi文件夹整个拷贝到我们一开始建立的MyfirstJNI工程的libs目录下,所有工作都已就绪,你的工程应该是这样的:  (ps:请忽略android-support-v4.jar这个和本次的内容没关系) 
 现在就来编写java代码调用吧,在MainActivity中添加必须的代码: [size=1em][backcolor=rgb(108, 226, 108) !important][color=white !important][size=1em] ? 
[size=1em]1 
[size=1em]2 
[size=1em]3 
 | [size=1em][size=1em]static { 
[size=1em]    System.loadLibrary("first_jni"); 
[size=1em]} 
 
  |  
  
 
这个是让系统加载so库,注意编译生成的库的名字是带前缀lib的,代码中请忽略否则会找不到相应的so文件。 调用就很简单了: [size=1em][backcolor=rgb(108, 226, 108) !important][color=white !important][size=1em] ? 
[size=1em]1 
[size=1em]2 
[size=1em]3 
[size=1em]4 
[size=1em]5 
 | [size=1em][size=1em]jni = new JNI(); 
 
[size=1em]jni.sayHello(); 
 
[size=1em]jni.plus(1,2); 
 
  |  
  
 
最后添加一些简单的button测试一下吧,我做的比较简陋了:    
 至此,我们的第一个ndk的demo就跑起来了。  
 |