1. 首先在前一篇 [Android] 3-1 在Eclipse安裝NDK並使用JNI呼叫C++ 的基礎下

從步驟19開始, 在jni的資料夾點選滑鼠右鍵, 然後New -> File 點選下去

 

2. 為你的檔案命名,附檔名要取.c, 因為要測試c語言, 這邊以C_Lib.c為例, 之後按下Finish

 

3. 打開新增的檔案, include jni的核心 jni.h

 

4. 按照命名規則建立你的要回傳方法, 和C++不同, 這邊不用extern C

而函數的名稱也是自行定義, 這邊以testCinJNI為例

 

5. 接著加入程式主體, 回傳一個字串 return (*env)->NewStringUTF(env, "Hello from JNI C");

注意的是1. 和C++不同, return env->NewStringUTF("Hello from JNI CPP");

2. NewStringUTF, 會無法被引索, 這是一個bug, 需要等待Android開發環境的更新

可以參考http://stackoverflow.com/questions/15899813/eclipse-method-newstringutf-could-not-be-resolved

這邊的文章討論來處理, 但不算是根本的解決

 

6. 根據文章採取的治標方法, 用滑鼠右鍵點選TestNDK,

然後滑鼠左鍵點選Properties

 

7. 點開C/C++ General, 點選Code Analysis, 然後勾選 Use Project settings,

下拉選單找到Method cannot be resolved, 將他取消掉, 按下Apply 之後在按下OK,

這動作會讓你以後都要靠自己檢察方法是否可以被找到

 

8. 重新啟動你的Eclipse, 之後就可以發現錯誤消失了

 

9. 接著要設定你的程式連結, 點開Android.mk, 將原本cpp的地方複製,

接著再下面改成你要被呼叫的名稱和你建立的.c檔, mk檔的細節在這邊並不探討

 

10. 回到你java的主程式, 在static建立Lib, 然後用native宣告方法名稱

之後再把原本用C++呼叫的地方改成用你剛宣告的方法

 

11. 編譯後執行就可以看到結果了

 

文章標籤
全站熱搜
創作者介紹
創作者 RX1226 的頭像
RX1226

給你魚竿

RX1226 發表在 痞客邦 留言(0) 人氣(1,012)