1、下载ndk相应的版本,如r5b版本,解压到某一目录
2、输入sudo gedit /etc/environment目录下,在Path中添加android ndk的目录(如/home/baobao/android-ndk-r5b)
3、编写项目测试
1)、使用Eclipse创建一个Android项目,名字为“HelloNDKJNI”,Build Target设置为“Android 2.2”,Application Name设置为“HelloNdkJni”,Package Name设置为“com.gcx.ndkjni”,Create Activity设置为“.HelloNdkJni”,Min SDK Version设置为“8”;
2)、接下来创建C语言库,在Eclipse的Package Explore里面的HelloNDKJNI项目下创建文件夹“jni”,并在该目录下创建两文件“Android.mk”和“hello-ndk-jni.c”,
Android.mk文件内容如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hello-ndk-jni
LOCAL_SRC_FILES := hello-ndk-jni.c
include $(BUILD_SHARED_LIBRARY)
hello-ndk-jni.c文件内容如下:
#include <string.h>
#include <jni.h>
jstring Java_com_gcx_ndkjni_HelloNdkJni_stringFromNDKJNI( JNIEnv* env,jobject thiz )
{
return (*env)->NewStringUTF(env, "Hello from NDK JNI !");
}
注:红色字体为调用java文件的目录位置,要与实际相一致,包括包名和文件名。
蓝色字体为native方法的名称
3)、编译创建的C库,打开终端,切换到当前jni所在的目录(用 cd 目录 可直接切换),执行命令ndk-build,此时会在项目中生成libs和obj目录,并在里面生成相应的文件,
4) 刷新Eclipse中的Package Explore中的HelloNDKJNI项目,此时obj和libs目录也添加进去了,在obj/armeabi分支下也多了libhello-ndk-jni.so文件,hello-ndk-jni这个名是根据3-2)步中的Android.mk文件中的LOCAL_MODULE决定的,接下来修改src/com.gcx.ndkjni分支下的HelloNdkJni.java文件,最后的文件内容如下:
package com.gcx.ndkjni;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class HelloNdkJni extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv =new TextView(this);
tv.setText(stringFromNDKJNI());
setContentView(tv);
}
public native String stringFromNDKJNI();
static{
System.loadLibrary("hello-ndk-jni");
}
}