Android Studio NDK開發(fā)(一):準備工作(CMake方式)

前言

NDK即Native Development Kit寞缝,是Google在Android開發(fā)中提供的用于快速創(chuàng)建native工程的一系列工具的集合顽悼,幫助開發(fā)者快速開發(fā)C/C++的動態(tài)庫,并自動將so和java應用一起打包成apk圆到,極大地減輕了開發(fā)人員的打包工作妻怎。
而我們經(jīng)常還會聽到JNI逛钻,那么JNI和NDK之間有什么區(qū)別呢?首先JNI即Java Native Interface雨女,是Java語言提供的一種Java和C/C++通信機制谚攒,Java可以通過JNI來調(diào)用本地的C/C++代碼,本地的C/C++可以通過JNI來調(diào)用Java代碼氛堕。
總得來說馏臭,JNI是Java語言提供的一種特性,是Java調(diào)用native的一種機制讼稚,可以說JNI和Android并沒有實質的關系括儒。而NDK是Google公司幫助Android開發(fā)者通過C/C++編寫應用的開發(fā)工具集合,包含了C/C++的頭文件乱灵、庫文件塑崖、說明文檔和示例代碼。

Android Studio CMake方式

Android Studio目前可以有兩種方式配置NDK的開發(fā)環(huán)境痛倚,個人將其分為傳統(tǒng)的配置方式和CMake方式
傳統(tǒng)的配置方式需要配置Android.mk规婆、Application.mk和gradle,這種方式復雜而且配置繁瑣蝉稳,在這里就不做贅述抒蚜。這里要著重強調(diào)的是CMake方式,Android Studio 2.2已經(jīng)對NDK開發(fā)做了很好的支持耘戚。下面介紹CMake方式:
首先創(chuàng)建工程嗡髓,在Android Studio中File->New->New Project,會出現(xiàn)下圖

1.png

這里我們需要注意的是將Include C++ support打上對勾收津,由于目前是最新的Android Studio(3.0)饿这,已經(jīng)很好的支持了Kotlin,所以下面有Include Kotlin support撞秋,最好勾上长捧,這樣可以方便的進行Kotlin語言的開發(fā)。至于警告吻贿,是因為我這張圖是為了展示給你們看串结,后來添加的,但是之前已經(jīng)有這個程序了,可不用管肌割。接下來就是Next->Next->Next->Next->Finish卧蜓。

2.png

點開項目目錄結構,可以看到Android Studio替我們多生成了三個文件夾把敞,分別是.externalNativeBuild弥奸、cpp和CMakeLists.txt。
.externalNativeBuild是系統(tǒng)自動生成的奋早,包含一些硬件信息其爵,可以不用管。
cpp文件中默認是有一個C++文件native-lib.cpp伸蚯,我們也可以自己手動添加C/C++文件摩渺,內(nèi)容需要自己編寫。下面是默認生成的剂邮,當然我們可以修改相應的代碼摇幻。

3.png

CMakeList.txt是CMake腳本配置的文件,配置的是關于庫的一些信息挥萌,需要自己配置绰姻。下面兩張圖就是默認生成的,我們需要注意的就是這里的native-lib需要和System.loadLibrary("native-lib")中的一致引瀑。首先需要說明的是#號是注釋的意思狂芋,相當于//。add_library:創(chuàng)建一個library憨栽,添加C/C++文件帜矾;find_library:表示依賴NDK中的庫,一般不需要手動去更改屑柔;target_link_libraries:表示將目標庫與NDK中的庫進行連接屡萤。如果有多個庫時,可以添加多個add_library和target_link_libraries掸宛。

4.png
5.png

再來看看gradle配置:

6.png

最后來看Java代碼:

7.png

這里需要注意的就是需要加上System.loadLibrary(...)去加載庫文件死陆,同時C/C++在Java中的聲明必須加上native關鍵字。

下載NDK和構建工具

依次選擇File -> Project Structure:

8.png

如果之前沒有下載過NDK唧瘾,會顯示download NDK措译,點擊就可以下載NDK,最終我的配置是這樣的:

9.png

依次選擇Tools -> Android -> SDK Manager -> SDK Tools:

10.png

依次選中CMake饰序、LLDB和NDK领虹。要編譯和調(diào)試本地代碼,需要這些組件菌羽。
NDK:讓你能在Android上面使用C/C++代碼的工具集掠械,提供了一系列的工具,幫助開發(fā)者快速開發(fā)C/C++ 注祖,極大地減輕了開發(fā)人員的打包工作猾蒂。
CMake:外部構建工具。如果你準備只使用ndk-build的話是晨,可以不使用它肚菠。
LLDB:Android Studio上面調(diào)試本地代碼的工具。

一鍵生成方法名

當以上配置都完成時罩缴,編寫一個Native方法蚊逢,直接Alt + Enter就可以生成對應的方法,這樣就可以在對應的C/C++文件中找到該函數(shù)的實現(xiàn)箫章。

11.png

展望

下一篇博客我將利用Android Studio從零開始編寫C/C++代碼烙荷,進行NDK開發(fā)。
Android NDK開發(fā)(二):Welcome to JNI

參考鏈接:http://blog.csdn.net/banketree/article/details/12167145

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末檬寂,一起剝皮案震驚了整個濱河市终抽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌桶至,老刑警劉巖昼伴,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異镣屹,居然都是意外死亡圃郊,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門女蜈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來持舆,“玉大人,你說我怎么就攤上這事伪窖±袅” “怎么了?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵惰许,是天一觀的道長席覆。 經(jīng)常有香客問我,道長汹买,這世上最難降的妖魔是什么佩伤? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮晦毙,結果婚禮上生巡,老公的妹妹穿的比我還像新娘。我一直安慰自己见妒,他們只是感情好孤荣,可當我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般盐股。 火紅的嫁衣襯著肌膚如雪钱豁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天疯汁,我揣著相機與錄音牲尺,去河邊找鬼。 笑死幌蚊,一個胖子當著我的面吹牛谤碳,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播溢豆,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼蜒简,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了漩仙?” 一聲冷哼從身側響起臭蚁,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎讯赏,沒想到半個月后垮兑,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡漱挎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年系枪,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片磕谅。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡私爷,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出膊夹,到底是詐尸還是另有隱情衬浑,我是刑警寧澤,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布放刨,位于F島的核電站工秩,受9級特大地震影響,放射性物質發(fā)生泄漏进统。R本人自食惡果不足惜助币,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望螟碎。 院中可真熱鬧眉菱,春花似錦、人聲如沸掉分。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至华坦,卻和暖如春愿吹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背季春。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留消返,地道東北人载弄。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像撵颊,于是被迫代替她去往敵國和親宇攻。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,514評論 2 348