NDK開(kāi)發(fā)流程

JNI和NDK


理解層面:

JNI:


一、什么是jni风瘦?

1队魏、android 系統(tǒng)架構(gòu):

Android 系統(tǒng)架構(gòu)

2、相當(dāng)于橋梁的作用:


JNI 的橋梁作用


3万搔、通過(guò)jni就可以讓java與C/C++代碼實(shí)現(xiàn)互調(diào)胡桨;

二、為什么用JNI ?

1瞬雹、native coder執(zhí)行高效:大量的運(yùn)算(極品飛車)昧谊,萬(wàn)能解碼(ffmpng)、Opengl(3D渲染)酗捌;

2揽浙、通過(guò)jni技術(shù),可以擴(kuò)展Android手機(jī)的功能意敛,比如wifi熱點(diǎn)馅巷;

3、代碼的復(fù)用:ffmpeg草姻、onencv(人臉識(shí)別庫(kù))钓猬、7-zip等;

4撩独、使用場(chǎng)景:考慮特殊情況(效率/操作硬件)敞曹;

三、JNI怎么用综膀?

1澳迫、學(xué)習(xí)C語(yǔ)言,看懂代碼剧劝;

2橄登、.....

NDK:


一、什么是NDK讥此?

1拢锹、Native Develop Kits(本地開(kāi)發(fā)工具包);

2萄喳、Android提供的用來(lái)做JNI開(kāi)發(fā)的工具包卒稳;

二、為什么用NDK他巨?

1充坑、提高JNI開(kāi)發(fā)效率:生成代碼/代碼提示/多平臺(tái)交叉編譯 等减江。

三、怎么學(xué)NDK捻爷?

1您市、見(jiàn)NDK開(kāi)發(fā)流程....

開(kāi)發(fā)層面:

NDK集成開(kāi)發(fā)流程(AS):

1、安裝配置NDK役衡;

a)解壓NDK的zip包到非中文目錄,并把名字改成:ndk-bundle;

b)配置path:解壓后的NDK的根目錄 --->ndk.build的根目錄;

2薪棒、給AS配置關(guān)聯(lián)NDK:

a)給 local.properties中添加配置:ndk.dir=G\:\\android.ndk-r10 //引用ndk手蝎;

b)給gradle.properties中添加配置:android.useDeprecatedNdk=true //兼容性老的ndk

3、在java里面編寫(xiě)native方法:

public class JNIS{

public native String helloJNI();//定義native方法俐芯,調(diào)用C代碼對(duì)應(yīng)的方法

}

其具體流程:

a) 在java里面寫(xiě)native代碼棵介;

b)在main目錄下創(chuàng)建jni目錄,在該目錄中創(chuàng)建c文件吧史,寫(xiě)C代碼->生成頭文件

# include<stuio.h>

# include <stulib.h>

# include <jni.h>

4邮辽、定義對(duì)應(yīng)的JNI

a)在main下創(chuàng)建jni文件夾 new directory;

b)生成native方法對(duì)應(yīng)的JNI函數(shù)聲明頭文件:命令窗口中贸营,進(jìn)入java文件夾吨述,

執(zhí)行命令:javah com.atguigu.jnitests2.JNIS,

生成頭文件:com.atguigu.jnitests2.JNIS.h

5钞脂、配置Gradle文件:

a揣云、配置ndk生成.so文件的名字和試用的版本

ndk{

moduleName "Test" //so文件名:“l(fā)ib”+moduleName+“.so";

abiFilters "armeabi","armeabi-v7a","x86"http://適用的cup的類型

}

b冰啃、在as中打印c語(yǔ)言的log邓夕;

------------------------------------AS中使用---------------------------------------------------1. 在build.gradle中添加配置:?

?ndk {? ??

? ? ? ? ldLibs "log"? ? ??

? } ? ?

? ?2. 包含日志頭文件, 定義日志輸出函數(shù):

#include

#defineLOG_TAG"atguigu"

#defineLOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)

#defineLOGI(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)

#defineLOGE(...) __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__)

-3、調(diào)用規(guī)范:

LOGE("在C代碼中返回的結(jié)果:%s\n",text);

c)在MainActivity中調(diào)用動(dòng)態(tài)鏈接庫(kù):

{

System.loadLibrary("moduleName");//不帶后綴阎毅,也不帶lib焚刚,跟gradle中定義的一樣。

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末扇调,一起剝皮案震驚了整個(gè)濱河市矿咕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌狼钮,老刑警劉巖痴腌,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異燃领,居然都是意外死亡士聪,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)猛蔽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)剥悟,“玉大人灵寺,你說(shuō)我怎么就攤上這事∏冢” “怎么了略板?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)慈缔。 經(jīng)常有香客問(wèn)我叮称,道長(zhǎng),這世上最難降的妖魔是什么藐鹤? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任瓤檐,我火速辦了婚禮,結(jié)果婚禮上娱节,老公的妹妹穿的比我還像新娘挠蛉。我一直安慰自己,他們只是感情好肄满,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布谴古。 她就那樣靜靜地躺著,像睡著了一般稠歉。 火紅的嫁衣襯著肌膚如雪掰担。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,816評(píng)論 1 290
  • 那天怒炸,我揣著相機(jī)與錄音恩敌,去河邊找鬼。 笑死横媚,一個(gè)胖子當(dāng)著我的面吹牛纠炮,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播灯蝴,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼恢口,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了穷躁?” 一聲冷哼從身側(cè)響起耕肩,我...
    開(kāi)封第一講書(shū)人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎问潭,沒(méi)想到半個(gè)月后猿诸,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡狡忙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年梳虽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片灾茁。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡窜觉,死狀恐怖谷炸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情禀挫,我是刑警寧澤旬陡,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站语婴,受9級(jí)特大地震影響描孟,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜砰左,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一匿醒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧菜职,春花似錦、人聲如沸旗闽。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)适室。三九已至嫡意,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間捣辆,已是汗流浹背蔬螟。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留汽畴,地道東北人旧巾。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像忍些,于是被迫代替她去往敵國(guó)和親鲁猩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,777評(píng)論 25 707
  • NDK全稱Native Development Kit(本地開(kāi)發(fā)工具集罢坝,)廓握,NDK是一系列工具集,可以幫助開(kāi)發(fā)者在...
    Bill灬zhang閱讀 866評(píng)論 0 0
  • “玄上弓”申請(qǐng)入住新浪看點(diǎn)平臺(tái) 有個(gè)老頭在小區(qū)門(mén)口開(kāi)了一個(gè)店炸油條賣游桩,一根賣一元錢(qián)拟枚,天天累的半死還不賺錢(qián)薪铜,他賣一元...
    木南開(kāi)閱讀 803評(píng)論 1 6
  • 發(fā)現(xiàn)問(wèn)題,分析問(wèn)題恩溅,解決問(wèn)題隔箍, 幫助別人,找到根源(五個(gè)為什么)脚乡,鼓勵(lì)她說(shuō)出她的感受(真實(shí)表達(dá)自己感受蜒滩,自己面對(duì))...
    冰潔Bella閱讀 260評(píng)論 0 0
  • 減肥,大抵是女人永恒的話題奶稠,風(fēng)姿卓越玲瓏有致的身材是每個(gè)愛(ài)美的女人的夢(mèng)想俯艰,小編是個(gè)胖子,一度想讓自己瘦成一道閃...
    愿美好相伴閱讀 277評(píng)論 0 0