天天看點

使用eclipse編譯生成so

本文是百度各路大神的文章,然後自己親自實作之後,寫下來的

留待後用,若有問題,請指正

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

繼續閱讀