what
Native Develop Kit.
why
- 平臺之間移植
- 重複使用庫
- 提性能,尤其遊戲這種計算密集型應用
- 使用第三方庫
- 代碼保護
- 不依賴Dalvik Java虛擬機的設計
目前Android系統支持以下七種不用的CPU架構,每一種對應着各自的應用程序二進制接口ABI:(Application Binary Interface)定義了二進制文件(尤其是.so文件)如何運行在相應的系統平臺上,從使用的指令集,內存對齊到可用的系統函數庫。對應關係如下:
ARMv5——armeabi
ARMv7 ——armeabi-v7a
ARMv8——arm64- v8a
x86——x86
MIPS ——mips
MIPS64——mips64
x86_64——x86_64
Java Native Interface
Java調用C/C++在Java語言裏面本來就有的,並非Android自創的,即JNI。JNI就是Java調用C++的規範。當然,一般的Java程序使用的JNI標準可能和android不一樣,Android的JNI更簡單。
How
如何使用jni
- java中先聲明一個native方法
- 編譯java源文件,javac得到.class文件
- 通過javah -jni 命令導出 .h頭文件
- 使用java需要交互的本地代碼,實現java中生命的native方法。(如果java需要與C++交互,那麼就用c++ 實現java的native方法)
- 將本地方法編譯成動態庫(window系統下是.dll文件,Linux系統下是.so文件 mac 是jnilib)
- java命令執行java程序,最終實現java調用本地方法