本文是百度各路大神的文章,然後自己親自實現之後,寫下來的
留待後用,若有問題,請指正
1:新建一個項目,包名別帶下劃線 以免後面.c文件分不清:
2:然後新建一個調用類:
public class HelloJni{
static{
System.loadLibrary("");;//暫時不寫加載什麼類 後面生成好後再填上去
}
public native String getText();
}
3:項目右鍵 Android Tolls ----> Add Native Surport...填上想要的SO庫名字,生成mk cpp文件
這樣就會在項目裏面生成一個jni文件夾,可以看到Android.Mk和 xxx.cpp
4:打開CMD窗口,cd到項目的bin文件夾下面的classes,然後點右鍵運行項目,不需要真實運行,在選擇設備的時候取消就是了,運行的目的是生成.class文件
在classes文件夾裏面,找到JniSo.class,此時切換到CMD 輸入 javah -classpath . -jni com.example.jniget.HelloJni(JniSo的包名加類名)
運行之後如果沒報錯,就會在classes文件夾下生成一個com_example_jniget_HelloJni.h,將他複製到項目的jni文件夾下
5:編寫.cpp文件 打開xxx.cpp文件,輸入
#include <string.h>
#include <jni.h>
jstring Java_com_example_jniget_HelloJni_getText(JNIEnv* env, jobject thiz) {
return (*env)->NewStringUTF(env, "--------------\n------------------\n----------\n");
}
這裏是.c,所以可能和網上其他文章有差別,因爲.cpp是用C++ .c就是用C
6:選中項目,ctrl+B,構建之後,就能在libs文件夾下看到對應生成的SO文件
7:把so文件的名字前面的lib去掉填入上面的load裏面,然後就可以在其他地方調用
簡單的項目地址:http://download.csdn.net/detail/qq_24179679/9776799