【威哥說】我們搞Android開發,經常聽說ndk和jni,那么它們到底是什么?今天就來給大家講解一下。
什么是NDK?
NDK全稱是Native Development Kit,NDK提供了一系列的工具,幫助開發者快速開發C(或C++)的動態庫,并能自動將so和java應用一起打包成apk。NDK集成了交叉編譯器(交叉編譯器需要UNIX或LINUX系統環境),并提供了相應的mk文件隔離CPU、平臺、ABI等差異,開發人員只需要簡單修改mk文件(指出“哪些文件需要編譯”、“編譯特性要求”等),就可以創建出so。
為什么使用NDK?
1、代碼的保護。由于apk的java層代碼很容易被反編譯,而C/C++庫反匯難度較大。
2、可以方便地使用現存的開源庫。大部分現存的開源庫都是用C/C++代碼編寫的。
3、提高程序的執行效率。將要求高性能的應用邏輯使用C開發,從而提高應用程序的執行效率。
4、便于移植。用C/C++寫得庫可以方便在其他的嵌入式平臺上再次使用。
什么是JNI?
JNI的全稱是JavaNative Interface,它提供了若干的API實現了Java和其他語言的通信(主要是C和C++)。
為什么使用JNI?
JNI的目的是使java方法能夠調用c實現的一些函數。
安卓中的so文件是什么?
android中用到的so文件是一個c++的函數庫。在android的JNI中,要先將相應的C語言打包成so庫,然后導入到lib文件夾中供java調用。
磨礪營12月15號安卓高薪就業班馬上開班了,想要跟威哥學安卓的朋友抓緊報名啊詳情關注微信公眾號mjw-java或訪問www.moliying.com/?jianshu