JNI 與 NDK


JNI 與 NDK


一、前言

JNI是Java調用Native機制,全稱爲 Java Native Interface,是Java 語言的特性,換句話說JNIAndroid沒有關

,在PC上開發Java的應用,如果運行在Windows平臺使用 JNI是是經常的,比如說讀寫Windows的註冊表。


NDK是Google公司推出的幫助Android開發者通過C/C++本地語言編寫應用的開發包,包含了C/C++的頭文件、庫文件、說明文檔和示例代碼,全稱 Native Development Kit,但是Android並不支持純C/C++編寫的應用,同時NDK提供的庫和函數功能很有限,僅僅處理些算法效率敏感的題。

另外,NDK多了一個把.so和.apk打包的工具而JNI開發並沒有打包,只是把.so文件放到文件系統的特定位置。(這個也是相當重要的)

二、爲什麼要使用NDK


(1)代碼的保護
由於apkjava層代碼很容易被反編譯,而C/C++庫反匯難度較大。

(2)可以方便地使用現存的開源庫

大部分現存的開源庫都是用C/C++代碼編寫的。


(3)提高程序的執行效率

將要求高性能的應用邏輯使用C開發,從而提高應用程序的執行效率。


(4)便於移植

C/C++寫的庫可以方便在其他的嵌入式平臺上再次使用。

NDK的這個特性既有利於代碼的重用,也可以在某種程度上提高程序運行的效率


三、JNI native方法實現步驟


(1)在Java中聲明native()方法,然後編譯(javac); 

(2)用javah產生一個.h文件; 

(3)編寫包含.h文件的c文件

(4)編譯c文件

(5)使用編譯成功的so文件。


四、使用NDK 編寫代碼步驟

(1)編寫Java代碼

(2)編寫相應的C/C++代碼

生成相應的.h文件

編寫相應的.c文件

(3)編譯xx-jni.c 生成相應的庫

編寫Android.mk文件

生成.so共享庫文件

(4)重新編譯XXJni工程,生成apk




 







發佈了40 篇原創文章 · 獲贊 1 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章