?android支持使用NDK開發C程序,關于配置NDK環境問題應該不用再贅述了,這個網上有很多,這里通過一篇實例來講述簡單的JNI開發,大家可以參考這篇文章[(Get Your Eclipse-Integrated NDK On!)](http://blog.csdn.net/xyz_lmn/article/details/6050392)搭建Eclipse編譯C語言為so文件的開發環境。
native方法實現步驟如下:
1、在Java中聲明native()方法,然后編譯(javac);?
2、用javah產生一個.h文件;?
3、編寫包含.h文件的c文件
4、編譯c文件
5、使用編譯成功的so文件。
第一步:
1、聲明native方法
~~~
public class Printf_Jni {
static {
System.loadLibrary("com_nedu_jni_helloword_printf-jni");
}
public native void printHello();
}
~~~
2、javac編譯
進入java文件所在路徑,調用javac命令,如圖:

第二步:使用javah命令生成.h頭文件,如圖:

這個要回到src目錄下,不知道什么原因,如果在上面的javac路徑下會報錯,如圖:

使用javah命令生成的頭文件如下:
~~~
public class Printf_Jni {
static {
System.loadLibrary("com_nedu_jni_helloword_printf-jni");
}
public native void printHello();
}
~~~
第三步:編寫c文件,代碼如下:
~~~
#include<stdio.h>
#include <stdlib.h>
#include "com_nedu_jni_helloword_Printf_Jni.h"
JNIEXPORT void JNICALL Java_com_nedu_jni_helloword_Printf_1Jni_printHello
(JNIEnv *e, jobject j)
{
printf("Hello world!");
}
~~~
第四步,書寫Android.mk文件,編譯c文件
Android.mk文件如下:
~~~
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := com_nedu_jni_helloword_printf-jni
LOCAL_SRC_FILES :=Printf_Jni.c
include $(BUILD_SHARED_LIBRARY)
~~~
LOCAL_MODULE??? := com_nedu_jni_helloword_printf-jniLOCAL_MODULE??? := com_nedu_jni_helloword_printf-jniLOCAL_MODULE??表示so文件名
LOCAL_SRC_FILES 需要編譯的文件
按照這篇文章[(Get Your Eclipse-Integrated NDK On!)](http://www.devdiv.com/home.php?mod=space&uid=14682&do=blog&id=2389)的介紹就可以在Eclipse編譯了。
第五步:使用so文件:
通過下面的代碼加載so文件
~~~
System.loadLibrary("com_nedu_jni_helloword_printf-jni");
~~~
通過下面的代碼加載so文件通過下面的代碼加載so文件
調用如下:
~~~
Printf_Jni print=new Printf_Jni();
~~~
~~~
print.printHello();
~~~