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. 編譯後執行就可以看到結果了