配置完Android NDK工具后
1.新建一个Android项目,java文件下包含native方法
package com.dnfchan.ndktest;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class NDKTest2Activity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.main);
TextView view=new TextView(this);
int a=add(5,9);
view.setText(""+a);
setContentView(view);
}
public native int add(int x,int y); //本地方法1
public native int del(); //本地方法2,未调用
static{
System.loadLibrary("test-jni");//加载库,库名省略的前缀lib和后缀.so,实际库名是libtest-jni.so
}
}
2.在工程目录下新建一个jni的目录,并在工程目录运行头文件生成命令javah -classpath bin -d jni com.dnfchan.ndktest.NDKTest2Activity.运行完后将在jni文件夹生成.h头文件
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_dnfchan_ndktest_NDKTest2Activity */
#ifndef _Included_com_dnfchan_ndktest_NDKTest2Activity
#define _Included_com_dnfchan_ndktest_NDKTest2Activity
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_dnfchan_ndktest_NDKTest2Activity
* Method: add
* Signature: (II)I
*/
JNIEXPORT jint JNICALL Java_com_dnfchan_ndktest_NDKTest2Activity_add
(JNIEnv *, jobject, jint, jint);
/*
* Class: com_dnfchan_ndktest_NDKTest2Activity
* Method: del
* Signature: ()I
*/
JNIEXPORT jint JNICALL Java_com_dnfchan_ndktest_NDKTest2Activity_del
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
3.在jni文件夹下新建test-jni.c文件,并根据头文件写里面的方法。可以将.h的方法copy下来,并添上参数名即可
#include <jni.h>
//对应java文件的add()方法
JNIEXPORT jint JNICALL Java_com_dnfchan_ndktest_NDKTest2Activity_add
(JNIEnv* env, jobject thiz, jint x, jint y){
return x+y;
}
4.为了将以上文件编译成库文件,还必须在jni目录下新建Android.mk文件
LOCAL_PATH:=$(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE:=test-jni
LOCAL_SRC_FILES:=test-jni.c
include $(BUILD_SHARED_LIBRARY)
第一行表示源文件路径,my-dir表示返回当前路径
第二行是指定让GNU MAKEFILE为你清除许多LOCAL_XXX变量
第三行编译后的模块名
第四行编译的源码文件
第五行编译成共享库
5.利用ndk-build生成库,在工程根目录下运行ndk-build,出现下面信息是表示生成成功。
Compile thumb : test-jni <= test-jni.c
SharedLibrary : libtest-jni.so
Install : libtest-jni.so => libs/armeabi/libtest-jni.so
6.库生成好后,回到eclipse刷新工程,运行即可。
![](http://hi.csdn.net/attachment/201112/1/0_132272509669i8.gif)