- 軟件大小:734.25M
- 軟件語言:中文
- 軟件類型:國產(chǎn)軟件
- 軟件類別:免費軟件 / 編程工具
- 更新時間:2017-06-28 11:50
- 運行環(huán)境:WinAll, WinXP, Win7, Win8, Win10
- 軟件等級:
- 軟件廠商:
- 官方網(wǎng)站:暫無
5.51M/中文/5.0
32.59M/英文/10.0
96.24M/中文/10.0
105.00M/中文/5.0
6.41M/中文/10.0
android ndk r10d是一款非常好用的安卓開發(fā)工具軟件,有了它以后,用戶就可以快速的進行開發(fā),還可以將應(yīng)用文件打包成安卓常用的apk格式,歡迎有需要的朋友到綠色資源網(wǎng)下載使用!
Android NDK是一系列工具的集合。幫助開發(fā)者快速開發(fā)C(或C++)的動態(tài)庫,并能自動將so和java應(yīng)用一起打包成apk。NDK集成了交叉編譯器,并提供了相應(yīng)的mk文件隔離平臺、CPU、API等差異,開發(fā)人員只需要簡單修改mk文件(指出“哪些文件需要編譯”、“編譯特性要求”等),就可以創(chuàng)建出so。NDK可以自動地將so和Java應(yīng)用一起打包,極大地減輕了開發(fā)人員的打包工作。
1.NDK包括了:
從C / C++生成原生代碼庫所需要的工具和build files。
將一致的原生庫嵌入可以在Android設(shè)備上部署的應(yīng)用程序包文件(application packages files ,即.apk文件)中。
支持所有未來Android平臺的一些列原生系統(tǒng)頭文件和庫。
2.使用原生SDK編程相比Dalvik虛擬機也有一些劣勢,比如程序更加復(fù)雜,兼容性難以保障,無法訪問Framework API,Debug難度更大等。開發(fā)者需要自行斟酌使用。
3.眾所周知,Android程序運行在Dalvik虛擬機中,NDK允許用戶使用類似C / C++之類的原生代碼語言執(zhí)行部分程序。
在Linux上,尤其是Debian/ubuntu上進行安裝,非常順利,不會有什么問題。但是在Windows平臺進行安裝,就不那么輕松了,根據(jù)Google的建議,我們需要安裝cygwin,而且特別提醒一定在安裝時,注意把make和gcc包含進去。
首次安裝時,會遇到的問題。由于沒有經(jīng)驗,第一次安裝,統(tǒng)統(tǒng)采用默認設(shè)置,由此遇到的第一個問題:
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ù)錯誤信息,可以推定應(yīng)該是安裝cygwin時沒有進行正確的設(shè)置,要選擇上make和gcc的 包選項,
為了以防萬一,遺漏掉依賴的包,干脆把Devel包從default變?yōu)閕nstall,這樣這個包下所有內(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工具會將共享庫打包進apk的文件。
旦安裝完NDK之后,就可以使用這些命令,從NDK的根目錄下build共享庫了:make APP=hello-jni 這將會編譯/sources/samples/hello-jni/hello-jni.c,并輸出共享庫到/apps/hello-jni /project/libs/armeabi/libhello-jni.so.由于實際工作中,我們很少會把工程放在/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,得到一個android-ndk-r10d-windows-x86_64.exe的安裝文件,雙擊解壓得到一個android-ndk-r10d的文件夾。安裝android NDK,前提是你必須是安裝android sdk,能夠看到這兒,應(yīng)該是已經(jīng)安裝android sdk了的,點擊菜單Window-->Preferences-->Android-->NDK,在NDK Location中輸入之前android-ndk-r10d的全路徑,點擊OK
到此為止,我們的android NDK就安裝完成了?。?!,如果展開android這個節(jié)點,發(fā)現(xiàn)沒有NDK這個選項,請參看:eclipse adt開發(fā)android ndk沒有NDK選項問題的解決方案
2.其次、從NDK的案例中導(dǎo)入一個來測試,把android-ndk-r10d\samples下的hello-jni導(dǎo)入到eclipse 中,然后將項目Add Native Support
在彈出的對話框中,點擊finish,這樣就為我們的項目增加了NDK的支持。
然后、在C/C++的Perspective,選中項目,點擊一個錘子模樣的菜單,來Build Project,如果能看到在控制臺打印類似20:50:59 Build Finished (took 1m:11s.298ms)的字樣就說明Build成功了
3.運行項目,我們能看到在模擬器上顯示出從當(dāng)前CUP的類型
4.我們NDK的環(huán)境就算搭建好了!?。?/p>
5.最后、我們來看一下怎樣來調(diào)試我們的NDK C/C++代碼,打開jni/hello-jni.c文件,我們看到一打開就報錯了,沒關(guān)系,解決方法請看Android NDK *** could not be resolved,錯誤消失后,在方法Java_com_example_hellojni_HelloJni_stringFromJNI的最后一行代碼上打上斷點,debug android Native Application
發(fā)現(xiàn)沒有Debug起來,控制臺的錯誤如下:
[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和項目的編譯版本不一致,造成的,我們改成一致,都是10,再次運行,發(fā)現(xiàn)又報了一個錯誤:
[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我們的項目,發(fā)現(xiàn)沒有進我們打的斷點,但是我們發(fā)現(xiàn)了Android Native Application gdb運行起來了
同時在控制臺上打印出如下的錯誤代碼:
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.
我試過,這個錯誤信息對我們的影響不大,我們按模擬器的返回鍵退出程序,再次進入,我們發(fā)現(xiàn),進入斷點了,可以調(diào)試了
到此,我們調(diào)試就成功了!
請描述您所遇到的錯誤,我們將盡快予以修正,謝謝!
*必填項,請輸入內(nèi)容