簡(jiǎn)介

什么是JNI
JNI的全稱(chēng)是Java Native Interface:Java本地開(kāi)發(fā)接口,它提供了若干的API實(shí)現(xiàn)了Java和其他語(yǔ)言的通信(主要是C和C++),目的就是Java可以調(diào)用C或C++開(kāi)發(fā)的函數(shù),C或C++也能調(diào)用Java的方法。這樣有很多有點(diǎn),其一就是效率,C/C++是本地語(yǔ)言,比java更高效;其二就是可以復(fù)用已經(jīng)存在的C/C++代碼;其三是Java反編譯比C語(yǔ)言容易,一般加密算法都是用C語(yǔ)言編寫(xiě),不容易被反編譯。
什么是NDK和CMake
NDK全稱(chēng)是Native Development Kit,NDK提供了一系列的工具,幫助開(kāi)發(fā)者快速開(kāi)發(fā)C(或C++)的動(dòng)態(tài)庫(kù),并能自動(dòng)將so和Java應(yīng)用一起打包成apk。NDK集成了交叉編譯器,并提供了相應(yīng)的mk文件隔離CPU、平臺(tái)、ABI等差異,開(kāi)發(fā)人員只需要簡(jiǎn)單修改mk文件(指出“哪些文件需要編譯”、“編譯特性要求”等),就可以創(chuàng)建出so。
CMake是一個(gè)比make更高級(jí)的編譯配置工具,它可以根據(jù)不同平臺(tái)、不同的編譯器,生成相應(yīng)的Makefile或者vcproj項(xiàng)目。
通過(guò)編寫(xiě)CMakeLists.txt,可以控制生成的Makefile,從而控制編譯過(guò)程。CMake自動(dòng)生成的Makefile不僅可以通過(guò)make命令構(gòu)建項(xiàng)目生成目標(biāo)文件,還支持安裝(make install)、測(cè)試安裝的程序是否能正確執(zhí)行(make test,或者ctest)、生成當(dāng)前平臺(tái)的安裝包(make package)、生成源碼包(make package_source)、產(chǎn)生Dashboard顯示數(shù)據(jù)并上傳等高級(jí)功能,只要在CMakeLists.txt中簡(jiǎn)單配置,就可以完成很多復(fù)雜的功能,包括寫(xiě)測(cè)試用例。如果有嵌套目錄,子目錄下可以有自己的CMakeLists.txt。
使用流程
1、在java文件中創(chuàng)建本地方法
2、build項(xiàng)目后自動(dòng)生成“.h”文件
3、創(chuàng)建.cpp文件,實(shí)現(xiàn).h文件中的方法
4、配置Cmake文件,生成“.so”文件
筆者項(xiàng)目目錄如下:
測(cè)試實(shí)例
public class MyJNI {
private static final String TAG=MyJNI.class.getName();
@Test
public void test(){
JNITest jniTest=new JNITest();
Log.d(TAG,jniTest.nativeCalculate(2)+"");
}
}
網(wǎng)站欄目:詳解AndroidJNI的基本使用(CMake)-創(chuàng)新互聯(lián)
當(dāng)前URL:http://www.chinadenli.net/article30/desspo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、品牌網(wǎng)站建設(shè)、微信小程序、做網(wǎng)站、虛擬主機(jī)、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容