- 軟件大?。?span>734.25M
- 軟件語(yǔ)言:中文
- 軟件類型:國(guó)產(chǎn)軟件
- 軟件類別:免費(fèi)軟件 / 編程工具
- 更新時(shí)間:2017-06-28 11:50
- 運(yùn)行環(huán)境:WinAll, WinXP, Win7, Win8, Win10
- 軟件等級(jí):
- 軟件廠商:
- 官方網(wǎng)站:暫無(wú)
5.51M/中文/5.0
32.59M/英文/10.0
96.24M/中文/10.0
105.00M/中文/5.0
6.41M/中文/10.0
android ndk r10d是一款非常好用的安卓開發(fā)工具軟件,有了它以后,用戶就可以快速的進(jìn)行開發(fā),還可以將應(yīng)用文件打包成安卓常用的apk格式,歡迎有需要的朋友到綠色資源網(wǎng)下載使用!
Android NDK是一系列工具的集合。幫助開發(fā)者快速開發(fā)C(或C++)的動(dòng)態(tài)庫(kù),并能自動(dòng)將so和java應(yīng)用一起打包成apk。NDK集成了交叉編譯器,并提供了相應(yīng)的mk文件隔離平臺(tái)、CPU、API等差異,開發(fā)人員只需要簡(jiǎn)單修改mk文件(指出“哪些文件需要編譯”、“編譯特性要求”等),就可以創(chuàng)建出so。NDK可以自動(dòng)地將so和Java應(yīng)用一起打包,極大地減輕了開發(fā)人員的打包工作。
1.NDK包括了:
從C / C++生成原生代碼庫(kù)所需要的工具和build files。
將一致的原生庫(kù)嵌入可以在Android設(shè)備上部署的應(yīng)用程序包文件(application packages files ,即.apk文件)中。
支持所有未來Android平臺(tái)的一些列原生系統(tǒng)頭文件和庫(kù)。
2.使用原生SDK編程相比Dalvik虛擬機(jī)也有一些劣勢(shì),比如程序更加復(fù)雜,兼容性難以保障,無(wú)法訪問Framework API,Debug難度更大等。開發(fā)者需要自行斟酌使用。
3.眾所周知,Android程序運(yùn)行在Dalvik虛擬機(jī)中,NDK允許用戶使用類似C / C++之類的原生代碼語(yǔ)言執(zhí)行部分程序。
在Linux上,尤其是Debian/ubuntu上進(jìn)行安裝,非常順利,不會(huì)有什么問題。但是在Windows平臺(tái)進(jìn)行安裝,就不那么輕松了,根據(jù)Google的建議,我們需要安裝cygwin,而且特別提醒一定在安裝時(shí),注意把make和gcc包含進(jìn)去。
首次安裝時(shí),會(huì)遇到的問題。由于沒有經(jīng)驗(yàn),第一次安裝,統(tǒng)統(tǒng)采用默認(rèn)設(shè)置,由此遇到的第一個(gè)問題:
your C compiler doesn't seem to work:
gcc.exe:/temp/android-4068-test.c: No such file or directory
gcc.exe: no input files
根據(jù)錯(cuò)誤信息,可以推定應(yīng)該是安裝cygwin時(shí)沒有進(jìn)行正確的設(shè)置,要選擇上make和gcc的 包選項(xiàng),
為了以防萬(wàn)一,遺漏掉依賴的包,干脆把Devel包從default變?yōu)閕nstall,這樣這個(gè)包下所有內(nèi)容一律安裝。
安裝好NDK之后,最好花上幾分鐘讀一讀/docs目錄下文檔。特別是要完整閱讀OVERVIEW.TXT,讀完以后你就可以明白NDK的初衷以及如何使用它了。
把native source放在/sources/,當(dāng)然也可以建立鏈接。
創(chuàng)建/sources//Android.mk,描述native sources。
創(chuàng)建/apps//Application.mk,描述Android applicaiton和navite sources。
在NDK路徑的最頂極目錄里執(zhí)行make命令來build native code : make APP
最后,使用SDK工具,以通常的方式編譯應(yīng)用,SDK的build工具會(huì)將共享庫(kù)打包進(jìn)apk的文件。
旦安裝完NDK之后,就可以使用這些命令,從NDK的根目錄下build共享庫(kù)了:make APP=hello-jni 這將會(huì)編譯/sources/samples/hello-jni/hello-jni.c,并輸出共享庫(kù)到/apps/hello-jni /project/libs/armeabi/libhello-jni.so.由于實(shí)際工作中,我們很少會(huì)把工程放在/apps下,因此下面將嘗試如何 將應(yīng)用和ndk分開來放置。
拷貝/apps/hello-jni/project,重命名為my-hello-jni,然后使用”Import from Existing Source”,創(chuàng)建名稱為my-hello-jni的android工程。在/apps下新建文件夾my-hello-jni,并從hello-jni 下拷貝Application.mk到新文件夾下,打開該文件,修改APP_PROJECT_PATH為正確的路徑,注意這里的路徑應(yīng)該是cygwin下 的路徑,例如我的路徑是:/cygdrive/e/workspace/my-hello-jni。
完成之后,到ndk的根路徑下,執(zhí)行make APP=my-hello-jni,然后即可成功看到結(jié)果:
Android NDK: Building for application 'my-hello-jni'
Compile thumb : hello-jni <= sources/samples/hello-jni/hello-jni.c
SharedLibrary : libhello-jni.so
Install : libhello-jni.so => /cygdrive/e/worskspace/my-hello-jni/libs/armeabi
1.首先、下載android NDK,得到一個(gè)android-ndk-r10d-windows-x86_64.exe的安裝文件,雙擊解壓得到一個(gè)android-ndk-r10d的文件夾。安裝android NDK,前提是你必須是安裝android sdk,能夠看到這兒,應(yīng)該是已經(jīng)安裝android sdk了的,點(diǎn)擊菜單Window-->Preferences-->Android-->NDK,在NDK Location中輸入之前android-ndk-r10d的全路徑,點(diǎn)擊OK
到此為止,我們的android NDK就安裝完成了?。?!,如果展開android這個(gè)節(jié)點(diǎn),發(fā)現(xiàn)沒有NDK這個(gè)選項(xiàng),請(qǐng)參看:eclipse adt開發(fā)android ndk沒有NDK選項(xiàng)問題的解決方案
2.其次、從NDK的案例中導(dǎo)入一個(gè)來測(cè)試,把a(bǔ)ndroid-ndk-r10d\samples下的hello-jni導(dǎo)入到eclipse 中,然后將項(xiàng)目Add Native Support
在彈出的對(duì)話框中,點(diǎn)擊finish,這樣就為我們的項(xiàng)目增加了NDK的支持。
然后、在C/C++的Perspective,選中項(xiàng)目,點(diǎn)擊一個(gè)錘子模樣的菜單,來Build Project,如果能看到在控制臺(tái)打印類似20:50:59 Build Finished (took 1m:11s.298ms)的字樣就說明Build成功了
3.運(yùn)行項(xiàng)目,我們能看到在模擬器上顯示出從當(dāng)前CUP的類型
4.我們NDK的環(huán)境就算搭建好了?。?!
5.最后、我們來看一下怎樣來調(diào)試我們的NDK C/C++代碼,打開jni/hello-jni.c文件,我們看到一打開就報(bào)錯(cuò)了,沒關(guān)系,解決方法請(qǐng)看Android NDK *** could not be resolved,錯(cuò)誤消失后,在方法Java_com_example_hellojni_HelloJni_stringFromJNI的最后一行代碼上打上斷點(diǎn),debug android Native Application
發(fā)現(xiàn)沒有Debug起來,控制臺(tái)的錯(cuò)誤如下:
[2015-01-28 21:06:01 - HelloJni] Unknown Application ABI:
[2015-01-28 21:06:01 - HelloJni] Android
[2015-01-28 21:06:01 - HelloJni] Unknown Application ABI:
[2015-01-28 21:06:01 - HelloJni] NDK:
[2015-01-28 21:06:01 - HelloJni] Unknown Application ABI:
[2015-01-28 21:06:01 - HelloJni] WARNING:
[2015-01-28 21:06:01 - HelloJni] Unknown Application ABI:
[2015-01-28 21:06:01 - HelloJni] APP_PLATFORM
[2015-01-28 21:06:01 - HelloJni] Unknown Application ABI:
[2015-01-28 21:06:01 - HelloJni] android-9
[2015-01-28 21:06:01 - HelloJni] Unknown Application ABI:
[2015-01-28 21:06:01 - HelloJni] is
[2015-01-28 21:06:01 - HelloJni] Unknown Application ABI:
[2015-01-28 21:06:01 - HelloJni] larger
[2015-01-28 21:06:01 - HelloJni] Unknown Application ABI:
[2015-01-28 21:06:01 - HelloJni] than
[2015-01-28 21:06:01 - HelloJni] Unknown Application ABI:
[2015-01-28 21:06:01 - HelloJni] android:minSdkVersion
[2015-01-28 21:06:01 - HelloJni] Unknown Application ABI:
[2015-01-28 21:06:01 - HelloJni] 3
[2015-01-28 21:06:01 - HelloJni] Unknown Application ABI:
[2015-01-28 21:06:01 - HelloJni] in
[2015-01-28 21:06:01 - HelloJni] Unknown Application ABI:
[2015-01-28 21:06:01 - HelloJni] ./AndroidManifest.xml
[2015-01-28 21:06:01 - HelloJni] Unknown Application ABI:
[2015-01-28 21:06:01 - HelloJni]
[2015-01-28 21:06:01 - HelloJni] Unknown Application ABI:
[2015-01-28 21:06:01 - HelloJni]
[2015-01-28 21:06:01 - HelloJni] Unknown Application ABI:
[2015-01-28 21:06:01 - HelloJni]
[2015-01-28 21:06:01 - HelloJni] Unknown Application ABI:
[2015-01-28 21:06:01 - HelloJni]
all
[2015-01-28 21:06:01 - HelloJni] Unable to detect application ABI's
這是由于android:minSdkVersion和項(xiàng)目的編譯版本不一致,造成的,我們改成一致,都是10,再次運(yùn)行,發(fā)現(xiàn)又報(bào)了一個(gè)錯(cuò)誤:
[2015-01-28 21:13:32 - HelloJni] gdbserver output:
[2015-01-28 21:13:32 - HelloJni] run-as: exec failed for lib/gdbserver Error:No such file or directory
[2015-01-28 21:13:32 - HelloJni] Verify if the application was built with NDK_DEBUG=1
我們修改一下C/C++ Build command:Properties-->C/C++ Build,去掉Use default build command前面的復(fù)選框,在
build command中輸入:ndk-build NDK_DEBUG=1
6.再次Debug我們的項(xiàng)目,發(fā)現(xiàn)沒有進(jìn)我們打的斷點(diǎn),但是我們發(fā)現(xiàn)了Android Native Application gdb運(yùn)行起來了
同時(shí)在控制臺(tái)上打印出如下的錯(cuò)誤代碼:
warning: Could not load shared library symbols for 88 libraries, e.g. /system/bin/linker.
Use the "info sharedlibrary" command to see the complete listing.
Do you need "set solib-search-path" or "set sysroot"?
warning: Unable to find dynamic linker breakpoint function.
GDB will be unable to debug shared library initializers
and track explicitly loaded dynamic code.
我試過,這個(gè)錯(cuò)誤信息對(duì)我們的影響不大,我們按模擬器的返回鍵退出程序,再次進(jìn)入,我們發(fā)現(xiàn),進(jìn)入斷點(diǎn)了,可以調(diào)試了
到此,我們調(diào)試就成功了!
請(qǐng)描述您所遇到的錯(cuò)誤,我們將盡快予以修正,謝謝!
*必填項(xiàng),請(qǐng)輸入內(nèi)容