編輯:關於Android編程
Android下的NDK開發是Android開發中不可或缺的一部分,通過Google提供的NDK套件,我們可以使用JNI這座橋梁在Java和C/C++之間建立聯系(互相調用)。那麼,為什麼在Android開發中需要了解NDK開發呢?誠然,這些原因有很多說法,在我總結來是這樣的。C/C++是比Java還要古老的編程語言,由於其古老的特性,導致早期有很多優秀的類庫出現,譬如處理視頻編解碼的FFMPEG類庫,這些復雜的類庫早就被C/C++編寫過,我們在處理視頻編解碼的時候沒必要重復“造輪子”,所以能直接拿來用的就直接拿來用,但是這個直接法很難做到,因為Java的編譯環境的原理跟C/C++的不同,所以就必須找個中間者為Java和C/C++代碼建立關系,這個中間者就是JNI。還有一個重要的原因就是效率問題,Java是跨平台的語言,在不同的平台有不同的JVM實現,Java源碼需要首先編譯成.class文件,然後讓.class文件運行在不同的JVM解釋執行上,這樣的步驟造成了效率的浪費,而不同的是C/C++,可以直接編譯成特定平台的二進制文件,直接運行在特定平台上,效率比Java高效很多,所以在某些特定的環境下,還是需要使用C/C++來解決效率問題,Java只負責處理C/C++返回來的結果就可以,這樣的話Java和C/C++互調就顯得相當重要了。
做NDK開發前最好需要了解一下C/C++的語法,通常這部分的代碼不需要Android程序員編寫,但是Android程序員最好能看懂C/C++源碼,這樣做會事半功倍一點,關於C/C++語法的學習不是這裡的重點,大家感興趣的話可以直接找資料學習,請從櫃底抽出大學教材《C語言程序設計——譚浩強》,拍拍上面的灰塵,隨便過一遍^.^
Java Native Interface Java 本地開發的接口。JNI 是一個協議,這個協議用來溝通java代碼和外部的本地代碼(c/c++)。通過這個協議,java代碼就可以調用外部的c/c++代碼,外部的c/c++代碼也可以調用java代碼。
C/C++ Develop tools,C/C++開發工具。是Eclipse上的一個插件,主要是讓C/C++代碼能夠高亮顯示。這個組件不是必要的,除非你是C/C++高手,喜歡在記事本上寫代碼,對於一般的程序員還是裝一下吧,高亮顯示很重要的。
Native Develop Kits,本地開發套件。這個套件是非常重要的,是Google提供給我們的一個在Android上開發JNI程序的工具集,有了它會使得開發高效的多。
Windows下的Linux模擬器。大家知道Android是基於Linux內核的操作系統,所以在編譯C/C++源碼的使用得使用Linux環境,將其編譯成Linux特定平台的文件.so或者.a。好消息是,NDK高版本中提供了Windows下開發套件的支持,cygwin可以不使用,直接在Windows下平台編譯也是可行的,但是為了顯示學習,最好還是需要了解一點的。
選擇 Helios- http://download.eclipse.org/release/helios ,等待展開,選擇Programing language
選擇c/c++ 開發工具
一路next下去,同意licenses。
安裝成功會提示是不是確認重啟eclipse,重啟就完成安裝。
NDK需要運行在linux環境下,cygwin是windows下模擬linux的一個工具。Cygwin是一個程序,支持很多插件。可以去cygwin的官網上下載http://www.cygwin.com/雙擊安裝,也可以從CSDN資源頁上下載我上傳的資料包,裡面包含cygwin的安裝程序和安裝包,地址是:http://download.csdn.net/detail/lee_tianya/8235323
安裝完畢後 ,桌面會出現一個快捷圖標,雙擊快捷小圖標,打開cygwin。
首先程序會初始化
敲入命令
Make –v
顯示出來 GNU Make 的版本 ,說明我們的cygwin模擬的linux編譯環境 模擬成功了.
首先翻牆上Google Android Develop的官網去下載NDK,地址是http://developer.android.com/tools/sdk/ndk/index.html
我這裡選用的Windows版本64位的r10d版本的ndk,是當前最新版本,android-ndk-r10d-windows-x86_64.exe,下載完成後點擊exe文件,會自定解壓到當前目錄下,這個過程比較漫長,可見升級造成安裝的過大啊,好,解壓完畢之後我移動E:/NDK目錄下了。
做完上面的一些步驟後,環境基本上是搭建完成了,現在我們使用cygwin模擬Linux環境下,進入Windows路徑E:/NDK/android-ndk-r10d下,執行ndk-build腳本。
第一步:進入根目錄找到根目錄下的cygdrive文件,該文件對應的是Windows下的所有盤符:
第二步:進入ndk所在目錄:
第三步:執行ndk-build腳本
通過上面的步驟,我們就可以使用ndk-build腳本了,但是這樣的過程是在是太繁瑣了,使用起來是非常的不方便,那麼下面我們來使用一下簡便的方法吧,配置文件。
為了方便直接在命令行裡面使用ndk-build,需要給cygwin的環境變量裡面添加ndk的目錄
首先
我們在cygwin安裝的目錄下找到etc/profile文件,這個文件就是cygwin的配置文件,用記事本打開這個文件,找到如下一行:
然後
我們在cygwin的控制台上找到ndk的解壓路徑
接下來
我們復制這個路徑到Path中,注意Linux環境變量中的路徑分割使用英文冒號“:”來區分
最後 檢測是否配置完成,在cygwin控制台下輸入“ndk-build”命令 若命令行顯示的是如上圖所示的信息,說明配置完成了,可以使用了,若不是這種情況,請根據文章的描述再進行一次配置。第5節 Toast5.1 使用效果Toast用來向用戶彈出一個提示框,然後自動消失,就像這樣,面包機烤好面包後,就騰的一下把面包從面包機裡彈出來。而這個控件顯示時也像是從
手機酷狗和電腦酷狗怎麼同步呢?手機酷狗和電腦酷狗的歌曲可以同步嗎?答案當然是肯定的!下面,小編將在下文演示手機酷狗和電腦酷狗同步教程,我們在電腦酷狗聽的歌曲
前言 flow layout, 流式布局, 這個概念在移動端或者前端開發中很常見,特別是在多標簽的展示中, 往往起到了關鍵的作用。然而Android 官方, 並沒有為開
Android開發之給應用簽名打包什麼是簽名打包?在Android 系統中,所有安裝到系統的應用程序都必有一個數字證書,此數字證書用於標識應用程序的作者和在應用程序之間建