本文是百度各路大神的文章,然後自己親自實作之後,寫下來的
留待後用,若有問題,請指正
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