1、首先创建一个工程,jnitest里面的类叫jnitest.java
public class jnitest extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// System.out.println("hello:" + hello());
}
static{
//加载库文件
System.loadLibrary("testJni");
}
//声明原生函数 参数为String类型 返回类型为String
private native String hello();
}
2、编译一下,(为了生成class文件)
3、利用DOS切换到该工程目录下面,执行javah -classpath bin/classes -d jni com.example.jnitest.jnitest
生成头文件用的
4、会看到在工程目录下面有个jni的文件夹,里面会有头文件
5、创建一个.c文件:testJni.c(方法的名字要注意)
#include<string.h>
#include<jni.h>
jstring
Java_com_example_jnitest_jnitest_hello(JNIEnv* env, jobject thiz)
{
return (*env)->NewStringUTF(env, "123");
}
6、从cygwin的目录中的samples下的hello-jni里的jni里的Android.mk拷贝一份到所建的工程里的jni目录中,这样工程的jni文件夹下面就有3个文件了.h文件、.c文件、.mk文件
7、打开cygwin的命令行,切换到该工程的目录下面
8、执行$ $NDK/ndk-build
9、会在工程的libs目录下面生成.so文件
10、执行以下之前的java类吧