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