1. 前言長話短說
1.1 為什么我要寫下這篇文章
本次我接觸NDK開發(fā)枯冈,是由于公司需要開發(fā)一款圖像二維碼識別的SDK,C++方法同事已經(jīng)幫我寫好办悟,我只需要搭建Android開發(fā)環(huán)境集成C++方法尘奏。本來以為很簡單的步驟,但是過程中還是遇到了不少坑病蛉,浪費(fèi)了不少時間炫加。所以為了能讓大家以后快速上手NDK開發(fā),少走沒有必要的彎路铺然,特地整理此篇文章來介紹我是如何從零開始搭建Android NDK開發(fā)環(huán)境以及運(yùn)行簡單的C++Demo俗孝。如有不正確的地方還請大家多多指點(diǎn)。
1.2 Android SDK介紹
下面是官方對于NDK的簡要介紹:NDK是一套可以允許APP調(diào)用像C或者C++編寫的原生代碼的工具集魄健。對于某些類型的APP赋铝。NDK可以實(shí)現(xiàn)現(xiàn)有代碼庫的復(fù)用,但對于大多數(shù)的APP來說不需要NDK提供的這項(xiàng)服務(wù)沽瘦。所以你在開發(fā)之前你要統(tǒng)籌一下你的APP是否真正需要通過NDK來開發(fā)革骨,以及你所要開發(fā)的功能,Android設(shè)備的API或者硬件是否支持析恋。
比如你想通過NDK實(shí)現(xiàn)自然數(shù)的加減乘除良哲,可是Java本身就支持這些功能的實(shí)現(xiàn),你再用NDK開發(fā)就略顯得累贅绿满。再比如你想通過NDK開發(fā)識別溫度的功能臂外,可是的你的手機(jī)上并沒有溫度傳感器的傳感器窟扑。
1.3 NDK主要用途
最簡單的說法喇颁,也是最常用的用途,Android和C++語言可以通過相應(yīng)暴露的方法來互相調(diào)用嚎货,主要用途無非是Android上面一些譬如圖片處理橘霎,圖像識別,文字處理殖属,定制Android終端設(shè)備硬件開發(fā)姐叁,游戲開發(fā)。C++的處理效率明顯比JDK的效率高得多。所以我們需要通過Java語言來調(diào)用C++為我們寫好的一些方法來處理我們的業(yè)務(wù)外潜,從而來提高業(yè)務(wù)效率以及客戶端的用戶體驗(yàn)原环。開搞。
2. 開始環(huán)境NDK搭建
一共有兩種方案处窥, 我比較推薦第一種方案嘱吗,Android Studio自動幫你搞定了。手動下載安裝過程比較麻煩滔驾,如果大家有需要可以自己研究一下谒麦。這里就不多介紹了。
2.1 方案一:推薦Android Studio直接下載NDK環(huán)境
我想大家都比較喜歡這種NDK的安裝方式哆致。我在CDSN上面找了一篇比較詳細(xì)的圖文教程绕德,請參考這篇博客:http://blog.csdn.net/yehui928186846/article/details/52787773
Android Studio需要下載NDK文件,網(wǎng)速慢的話下載時間可能比較長摊阀,大家耐心等待一下耻蛇。
2.2 NDK的官方下載:
這個已經(jīng)配置也比較麻煩,我也不多介紹了胞此,有需要的可以自行研究一下城丧,NDK官網(wǎng)下載地址:https://developer.android.google.cn/ndk/downloads/index.html
3. 開始NDK開發(fā)
上面的NDK開發(fā)環(huán)境搭建好了之后,就開始我們重要的開發(fā)這個過程了豌鹤,因?yàn)楸容^重要且容易產(chǎn)生疑問亡哄,我會把每個步驟的截圖都放出來,讓大家能更容易理解布疙。這個過程主要是通過Android Studio來完成的蚊惯,主要涉及的知識點(diǎn)就是C++編譯文件的生成,以及Java的調(diào)用灵临。