編輯:關於Android編程
安裝cygwin:
由於NDK編譯代碼時必須要用到make和gcc,所以你必須先搭建一個linux環境, cygwin是一個在windows平台上運行的unix模擬環境,它對於學習unix/linux操作環境,或者從unix到windows的應用程序移植,非常有用。通過它,你就可以在不安裝linux的情況下使用NDK來編譯C、C++代碼了。下面我們一步一步的安裝cygwin吧。
首先要下載cygwin的安裝程序setup.exe,下載地址為:
http://www.cygwin.com
下載完成後雙擊運行setup.exe,可以看到向導界面如下:
點擊下一步,此時讓你選擇安裝方式:
1)Install from Internet:直接從Internet上下載並立即安裝(安裝完成後,下載好的安裝文件並不會被刪除,而是仍然被保留,以便下次再安裝)。
2)Download Without Installing:只是將安裝文件下載到本地,但暫時不安裝。
3)Install from Local Directory:不下載安裝文件,直接從本地某個含有安裝文件的目錄進行安裝。
選擇第一項,點擊下一步: 選擇要安裝的目錄,注意,最好不要放到有中文和空格的目錄裡,似乎會造成安裝出問題,其它選項不用變,之後點下一步: 上一步是選擇安裝cygwin的目錄,這個是選擇你下載的安裝包所在的目錄,默認是你運行setup.exe的目錄(就是你下載的可執行文件setup.exe所在的目錄),我放在了F:\download目錄下,然後點擊下一步,此時你共有三種連接方式選擇: 1)Direct Connection:直接連接。 2)Use IE5 Settings:使用IE的連接參數設置進行連接。 3)Use HTTP/FTP Proxy:使用HTTP或FTP代理服務器進行連接(需要輸入服務器地址、端口號)。 用戶可以 根據自己的網絡連接的實情情況進行選擇,一般正常情況下,均選擇第一種,也就是直接連接方式。然後再點擊“下一步”,這是選擇要下載的站點,我用的是http://ftp.ntu.edu.tw,(也可以自己添加站點,在User URL中輸入你選擇的站點,然後點擊Add添加,在列表中選中添加的站點)然後點擊下一步: 此時會出現一個要下載安裝的組件包列表: 點擊下一步,進入安裝過程: 安裝完成後點擊完成結束安裝。下面測試一下cygwin是不是已經安裝好了:
運行cygwin,在彈出的命令行窗口輸入:cygcheck -c cygwin命令,會打印出當前cygwin的版本和運行狀態,如果status是ok的話,則cygwin運行正常。然後依次輸入gcc –version,g++ --version,make –version,gdb –version進行測試,如果都打印出版本信息和一些描述信息,非常高興的告訴你,你的cygwin安裝完成了!
下載Android NDK:
下載站點:
http://dl.google.com/android/ndk/android-ndk-r4-windows.zip
http://androidappdocs.appspot.com/sdk/ndk/index.html
http://developer.android.com/sdk/ndk/overview.html
如果上面的站點下載不了,也可以到網上找一些下載站點,下載r4版本的android_ndk,下載後直接解壓即可。可以考慮和android SDK放在相同的目錄下,對以後的開發可能會帶來一些便利。
配置NDK環境變量
首先找到cygwin的安裝目錄,找到一個home/<你的用戶名>/.bash_profile文件,我的是C:/cygwin/home/Administrator/.bash_profile,(如果找不到,那就到網上去找解決辦法把,這種情況確實可能發生)打開bash_profile文件,添加如下內容(根據你的ndk的安裝目錄,我的是D盤android-ndk-r4):
ANDROID_NDK_ROOT=/cygdrive/d/android-ndk-r4
export ANDROID_NDK_ROOT
ANDROID_NDK_ROOT這個名字是隨便取的,為了方面以後使用方便,選個簡短的名字,然後保存。打開cygwin,輸入cd $ANDROID_NDK_ROOT,如果輸出上面配置的/cygdrive/d/android-ndk-r4信息,則表明環境變量設置成功了。
安裝eclipse組件:
Android SDK 和 ADT就不介紹了,下面介紹一個新的組件——CDT。CDT是eclipse開發c++的組件包,這裡聲明一下,使用NDK開發android是不需要CDT的。如果你安裝了CDT,會在以後review別人的c++ code時帶來一些方便。可以到CSDN上下載CDT的壓縮包,加壓後把對應的目錄下的文件拷貝到eclipse的對應目錄下就可以了。
部署並運行第一個hello-jni例子
用NDK來編譯程序:
現在我們用安裝好的NDK來編譯一個簡單的程序吧,我們選擇ndk自帶的例子hello-jni,我的位於D:/android-ndk-r4/samples/hello-jni(根據你具體的安裝位置而定),運行cygwin,輸入命令cd /cygdrive/d/android-ndk-r4/samples/hello-jni,進入到D:/android-ndk-r4/samples/hello-jni目錄。輸入$ANDROID_NDK_ROOT/ndk-build,執行成功後,它會自動生成一個libs目錄,把編譯生成的.so文件放在裡面。($ANDROID_NDK_ROOT是調用我們之前配置好的環境變量,ndk-build是調用ndk的編譯程序),此時去hello-jni的libs目錄下看有沒有生成的.so文件,如果有,你的ndk就運行正常啦!
在eclipse中配置參數編譯源碼生成.so文件
1)導入hello-jni工程
2)這時你的工程可能會報錯,沒關系,工程右鍵選擇Build path->config Build path,如下圖:
然後選擇builders->new,如下圖:
選擇program,配置如下圖:
出現了添加界面,首先給編譯配置起個名字,如:C_Builder或者是默認的New_Builder,如上圖,
設置Location為<你cygwin安裝路徑>/bin/bash.exe程序,例如:C:/cygwin/bin/bash.exe;
設置Working Directory為<你cygwin安裝路徑>/bin目錄,例如:C:/cygwin/bin
設置Arguments為:
--login -c "cd /cygdrive/d/android-ndk-r4/samples/hello-jni && $ANDROID_NDK_ROOT/ndk-build"
上面的配置中/cygdrive/e/android-ndk-r5/samples/hello-jni是你當前要編譯的程序的目錄,$ANDROID_NDK_ROOT是之前配置的ndk的環境變量,這兩個根據你具體的安裝目錄進行配置,其他的不用變,Arguments這串參數實際是給bash.exe命令行程序傳參數,進入要編譯的程序目錄,然後運行ndk-build編譯程序。
接著配置refresh選項:
勾選Refresh resources upon completion
再配置Build Options選項,如下圖:
勾選上最後三項,之後點擊Specify Resources按鈕,選擇資源目錄,勾選你的項目目錄即可:
最後點擊Finish,點擊OK一路把剛才的配置都保存下來,注意:如果你配置的編譯器在其它編譯器下邊,記得一定要點Up按鈕,把它排到第一位,否則C代碼的編譯晚於Java代碼的編譯,會造成你的C代碼要編譯兩次才能看到最新的修改,如下圖,一定要保證New_Builder在第一位:
現在來測試一下是否可以自動編譯呢,打開項目jni目錄裡的hello-jni.c文件把提示Hello from JNI!改成其他的文字:如:"Hello,My name is lusifer.",然後再模擬器中運行你的程序,如果模擬器中顯示了你最新修改的文字,那麼你已經全部配置成功啦!
ContentProvider為存儲和獲取數據提供統一的接口,它可以在不同的應用程序之間共享數據,本身就是適合進程間通信的。ContentProvider底層實現也是Bi
趁著周一休息,更新一下博客。最近項目中使用到了分組管理,需要實現Listview的Item拖動處理。查略一下資料和借鑒了別人的代碼將功能實現了。現在整理一下代碼,方便自己
Android 自定義組件成JAR包的實現方法,這裡對自己實現的Android View 組件進行JAR 包的處理。 &nb
首先是配置文件: 活動中的代碼如下: package com.itydl.rwinrom;import jav