Android NDK環(huán)境搭建與配置說(shuō)明

https://blog.piasy.com/tags/#WebRTC



出現(xiàn)ndk-build:command not found可能的問(wèn)題是

1.文件bash_profile設(shè)置不正確

2.編譯時(shí)輸入命令 “$NDK/ndk-build” 一定包括$直接引的目錄

整理NDK配置流程是:

NDK概述

NDK全稱(chēng):Native Development Kit

1喷好、NDK是一系列工具的集合。

* NDK提供了一系列的工具拙毫,幫助開(kāi)發(fā)者快速開(kāi)發(fā)C(或C++)的動(dòng)態(tài)庫(kù)疆拘,并能自動(dòng)將so和java應(yīng)用一起打包成apk央拖。這些工具對(duì)開(kāi)發(fā)者的幫助是巨大的步藕。

* NDK集成了交叉編譯器胶惰,并提供了相應(yīng)的mk文件隔離CPU器仗、平臺(tái)、ABI等差異童番,開(kāi)發(fā)人員只需要簡(jiǎn)單修改mk文件(指出“哪些文件需要編譯”、“編譯特性要求”等)威鹿,就可以創(chuàng)建出so剃斧。

* NDK可以自動(dòng)地將so和Java應(yīng)用一起打包,極大地減輕了開(kāi)發(fā)人員的打包工作忽你。

2幼东、NDK提供了一份穩(wěn)定、功能有限的API頭文件聲明科雳。

Google明確聲明該API是穩(wěn)定的根蟹,在后續(xù)所有版本中都穩(wěn)定支持當(dāng)前發(fā)布的API。從該版本的NDK中看出糟秘,這些API支持的功能非常有限简逮,包含有:C標(biāo)準(zhǔn)庫(kù)(libc)、標(biāo)準(zhǔn)數(shù)學(xué)庫(kù)(libm)尿赚、壓縮庫(kù)(libz)散庶、Log庫(kù)(liblog)。

NDK帶來(lái)什么

1凌净、NDK的發(fā)布悲龟,使“Java+C”的開(kāi)發(fā)方式終于轉(zhuǎn)正,成為官方支持的開(kāi)發(fā)方式冰寻。

使用NDK须教,我們可以將要求高性能的應(yīng)用邏輯使用C開(kāi)發(fā),從而提高應(yīng)用程序的執(zhí)行效率斩芭。使用NDK轻腺,我們可以將需要保密的應(yīng)用邏輯使用C開(kāi)發(fā)乐疆。畢竟,Java包都是可以反編譯的约计。NDK促使專(zhuān)業(yè)so組件商的出現(xiàn)诀拭。(樂(lè)觀猜想,要視乎Android用戶(hù)的數(shù)量)

2煤蚌、NDK將是Android平臺(tái)支持C開(kāi)發(fā)的開(kāi)端耕挨。

NDK提供了的開(kāi)發(fā)工具集合,使開(kāi)發(fā)人員可以便捷地開(kāi)發(fā)尉桩、發(fā)布C組件筒占。同時(shí),Google承諾在NDK后續(xù)版本中提高“可調(diào)式”能力蜘犁,即提供遠(yuǎn)程的gdb工具翰苫,使我們可以便捷地調(diào)試C源碼。在支持Android平臺(tái)C開(kāi)發(fā)这橙,我們能感覺(jué)到Google花費(fèi)了很大精力奏窑,我們有理由憧憬“C組件支持”只是Google Android平臺(tái)上C開(kāi)發(fā)的開(kāi)端。畢竟屈扎,C程序員仍然是碼農(nóng)陣營(yíng)中的絕對(duì)主力埃唯,將這部分人排除在Android應(yīng)用開(kāi)發(fā)之外,顯然是不利于Android平臺(tái)繁榮昌盛的鹰晨。

NDK環(huán)境搭建說(shuō)明

以下操作基于:Windows7 + Android-ndk-r8b-windows + Cygwin DLL is 1.7.16-1

第一步:下載NDK安裝包

下載地址:http://developer.android.com/tools/sdk/ndk/index.html

選擇android-ndk-r8b-windows.zip下載

下載完后墨叛,打開(kāi)壓縮包并解壓到指定目錄,例如:D:\

第二步:下載并安裝Cygwin

當(dāng)前版本是:Cygwin 1.7.16模蜡,下載地址:http://www.cygwin.com/

下載在線安裝程序setup.exe(688KB)漠趁,下載后運(yùn)行,界面如下:

(圖1:安裝初始界面)

圖2:選擇安裝的方式忍疾,默認(rèn)用在線網(wǎng)絡(luò)安裝闯传,也就是第一項(xiàng);第二項(xiàng)是只下載不安裝膝昆;第三項(xiàng)是從本地安裝丸边;)

圖3:選擇安裝目錄,以及可使用的用戶(hù)群荚孵,安裝目錄此處選擇D:\Cygwin)

圖4-1:安裝包存放路徑妹窖,默認(rèn)是C:\Windows\system32目錄,此處改為D:\Cygwin\system32)

圖4-2:安裝包存放路徑收叶,此處改為D:\Cygwin\system32)

圖5:網(wǎng)絡(luò)連接方式)

圖6:選擇下載鏡像站點(diǎn))

圖7:在下載時(shí)彈出一個(gè)提示骄呼,點(diǎn)“確定”即可)

圖8-1:下載后會(huì)提示你選擇需要安裝的安裝包)

圖8-2:編譯NDK,需選擇Devel(點(diǎn)擊列表中Devel,將后面的Default改為Install蜓萄,圖中箭頭所示)隅茎,其它均為默認(rèn)狀態(tài)。)

圖9:等待下載安裝)

圖10:安裝完成)

友情提醒:安裝完成后嫉沽,最好把下載的包目錄做個(gè)備份辟犀,本文包存放路徑是D:\Cygwin\system32,下次安裝同樣的環(huán)境可以直接使用離線安裝方式(參考圖2)绸硕。

第三步:驗(yàn)證Cygwin環(huán)境

安裝完成后堂竟,運(yùn)行一次Cygwin安裝目錄下的Cygwin.bat,

分別輸入:

make -v

和玻佩,

gcc -v

如果檢測(cè)成功出嘹,會(huì)有make和gcc相關(guān)版本信息打印出來(lái),如下圖咬崔。

第四步:配置NDK路徑設(shè)置

可以在cygwin中通過(guò)vim修改税稼,也可以在Cygwin安裝目錄中修改 home\<你的用戶(hù)名>\.bash_profile 文件中最后添加環(huán)境變量

NDK=/cygdrive/d/android-ndk-r8b

export NDK

其中NDK=/cygdrive/<你的盤(pán)符>/ ,"NDK"這個(gè)名字隨便起垮斯,以后經(jīng)常用不要太長(zhǎng)郎仆。

重啟cygwin,輸入:

cd $NDK

可進(jìn)入ndk對(duì)應(yīng)目錄說(shuō)明設(shè)置OK兜蠕。

第五步:編譯演示工程

現(xiàn)在就可以編譯相關(guān)NDK工程了(一些用c/c++寫(xiě)的程序)丸升,編譯方法如下:

1、在cygwin命令行下牺氨,進(jìn)入android項(xiàng)目工作目錄:

cd $NDK

2、依次進(jìn)入samples\hello-jni目錄墩剖,(完整路徑示例: D:\android-ndk-r8b\samples\hello-jni)

3猴凹、運(yùn)行

$NDK/ndk-build

注意:該命令$NDK和/ndk-build是連接到一起的,中間沒(méi)有空格岭皂,實(shí)際使用時(shí)是打入完整的$NDK/ndk-build郊霎,不要只打ndk-build。

4爷绘、正常編譯完成后會(huì)在你的項(xiàng)目libs/armeabi目錄下生成對(duì)應(yīng)的 .so文件书劝。

第六步:導(dǎo)入靜態(tài)目標(biāo)庫(kù)到Android項(xiàng)目

編譯完成后會(huì)得到*.so靜態(tài)目標(biāo)庫(kù)后,就可以導(dǎo)入工程環(huán)境Eclipse Android項(xiàng)目中使用土至,注意购对,NDK編程并非一定要把這個(gè)目標(biāo)庫(kù)導(dǎo)入Android項(xiàng)目使用,除了本步驟描述的使用方法之外陶因,還有Android源碼直接修改骡苞、編譯,然后燒錄到測(cè)試機(jī)的開(kāi)發(fā)方式,那樣可以實(shí)現(xiàn)應(yīng)用程序默認(rèn)安裝解幽、權(quán)限開(kāi)機(jī)提升等等更“徹底”的功能贴见。綜合一下:

本步驟演示屬于NDK目標(biāo)庫(kù)+Andriod APK樣式,此外還有Android源碼直接開(kāi)發(fā)躲株、直接編譯方式(確切一點(diǎn)已經(jīng)淡化Android所謂的工程概念了片部,當(dāng)然源碼開(kāi)發(fā)目前似乎還無(wú)法直接在Windows下進(jìn)行,好像必須使用Linux家族系統(tǒng)進(jìn)行霜定,天緣稍后文章會(huì)有所涉及)

使用方法如下(示例):

1档悠、在Eclipse中新建一個(gè)工程HelloJni,HelloJni.java中的代碼可參考NDK對(duì)應(yīng) sample下的演示代碼(android-ndk-r8b\samples\hello-jni\tests\src\com\example \HelloJniTest)調(diào)用方法然爆。

2站粟、將NDK編譯項(xiàng)目目錄下的jni和libs文件夾拷貝到新建工程目錄下

注意這兩個(gè)文件夾要和工程中的src和res文件在同一目錄下。然后進(jìn)入Eclipse中刷新工程(會(huì)看到多出兩個(gè)文件夾)曾雕。

3奴烙、運(yùn)行Eclipse項(xiàng)目,就可以在虛擬機(jī)上看到hello-jni.c函數(shù)中輸出字符串剖张。

4切诀、后續(xù)您可以試著修改庫(kù)源程序或項(xiàng)目JAVA程序來(lái)熟悉NDK整個(gè)開(kāi)發(fā)過(guò)程。


設(shè)置系統(tǒng)的Path環(huán)境變量到G:\cygwin\bin

2搔弄、配置SDK

NDK得依賴(lài)SDK幅虑,所以必須得先配置SDK

1)將下載到的android-sdk_r10-windows.zip,解壓到磁盤(pán)的跟目錄下顾犹,比如:e:\android_sdk倒庵;

2)設(shè)置系統(tǒng)的Path環(huán)境變量到e:\android_sdk\platform-tools,如果不設(shè)置的話炫刷,運(yùn)行ndk-build的時(shí)候會(huì)提示adb不在當(dāng)前Path下擎宝。

3、配置NDK

1)將下載到的android-ndk-r5b-windows.zip文件解壓到一個(gè)文件夾里浑玛,最好路徑短點(diǎn)绍申,我的放在E:\android\android-ndk-r5b下;

2)設(shè)置系統(tǒng)的Path環(huán)境變量到e:\android\android-ndk-r5b顾彰,輸入命令行的時(shí)候簡(jiǎn)單一點(diǎn)极阅。

三、測(cè)試配置環(huán)境

1)運(yùn)行cmd

2)輸入bash涨享,如果提示“'bash' 不是內(nèi)部或外部命令筋搏,也不是可運(yùn)行的程序或批處理文件〔匏恚”請(qǐng)檢查cygwin的path路徑是否設(shè)置正確拆又,運(yùn)行后控制臺(tái)會(huì)變成下面的樣子:

如上配置過(guò)程來(lái)自http://blog.csdn.net/aminfo/article/details/7814304

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末儒旬,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子帖族,更是在濱河造成了極大的恐慌栈源,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件竖般,死亡現(xiàn)場(chǎng)離奇詭異甚垦,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)涣雕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門(mén)艰亮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人挣郭,你說(shuō)我怎么就攤上這事迄埃。” “怎么了兑障?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵侄非,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我流译,道長(zhǎng)逞怨,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任福澡,我火速辦了婚禮叠赦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘革砸。我一直安慰自己除秀,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布算利。 她就那樣靜靜地躺著鳞仙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪笔时。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,730評(píng)論 1 289
  • 那天仗岸,我揣著相機(jī)與錄音允耿,去河邊找鬼。 笑死扒怖,一個(gè)胖子當(dāng)著我的面吹牛较锡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播盗痒,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼蚂蕴,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼低散!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起骡楼,我...
    開(kāi)封第一講書(shū)人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤熔号,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后鸟整,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體引镊,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年篮条,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了弟头。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡涉茧,死狀恐怖赴恨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情伴栓,我是刑警寧澤伦连,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站挣饥,受9級(jí)特大地震影響除师,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜扔枫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一汛聚、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧短荐,春花似錦倚舀、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至糠排,卻和暖如春舵稠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背入宦。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工哺徊, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人乾闰。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓落追,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親涯肩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子轿钠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

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