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#include jstringJava_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类吧