首先介紹下什麼是JNI,JNI全名jni java native interface java本地開發接口,它是用來讓java語言和c/c++的語言相互調用的一種技術。
下面介紹下NDK的開發流程:
把ndk解壓到一個文件夾下, 並且在系統的環境變量path中追加ndk的根目錄: C:\IDE\android-ndk-r9
1.
在java代碼中聲明native方法.
2. 在window -> preferences -> Android -> NDK 把ndk的根目錄配置進去.
右鍵工程 Android Tools -> Add Native Support 寫進去一個函數庫的名字.
3. 使用javah命令生成.h的頭文件, 把頭文件拷貝到工程的jni目錄下.
4. 實現c代碼: 把生成的.h頭文件引入進來(使用雙引號方式引入).
5. 處理錯誤和代碼提示: 右鍵工程 -> Properties -> C/C++ General -> Paths and Symbols -> Includes -> Add 把android-ndk-r9\platforms\android-9\arch-arm\usr\include配置進去.
6. 把c代碼對應native方法實現了.
7. 在java代碼中加載.so庫文件, 調用native方法.
C++開發流程.
在c的語法中JNIEnv是JNINativeInterface*結構體的一級指針變量.
(**env).NewStringUTF(env, "hello from c!!");
在c++語法中JNIEnv是_JNIEnv
(*env).NewStringUTF("hello from c++");
c端返回給java中文:
把工程所有的文件修改成utf-8的編碼.
如果修改完編碼之後, 工程不能運行. Scanner Configration Builder
解決方法: 把工程close project 再 open project.