Android NDK 個人使用狀況總結

背景介紹

這幾天學習了一下Android NDK開發,在學習的過程中參考了一些資料,但最後總結時卻發現沒有一份資料能夠起到按照步驟一步步來可以完成整個開發過程的,即,從開發環境的搭建到自己建立一個簡單的Android NDK項目,倒是Google官方的介紹文檔起到了重要的作用。基於此,我就把我在這個過程中遇到的情況寫出來。

在我看來,NDK只是一種技術,這種技術提供了在Android應用中使用C/C++進行開發的途徑,真正關鍵的是C/C++。

開發環境搭建

我是在Windows XP下搭建的NDK開發環境,整個開發環境的搭建有兩個重要的部分,第一個是Cygwin的安裝與配置,第二個是Android NDK的安裝。

需要記錄的是,在對Cygwin進行配置時,現在的版本只需要在/home/用戶名/.bash_profile文件的最後添加

NDKROOT=/cygdrive/你的NDK根目錄
export NDKROOT

即可,配置完成保存後,重新打開Cygwin,輸入$NDKROOT,當回顯所配置的路徑時,則說明配置成功。

而現在的ndk中,所提供的實例則放置在samples文件夾下。

導入所提供的實例

當向eclipse中導入所提供的ndk實例時,是無法直接導進去的,我採用的方法是:
首先,建立一個Android Project,然後把除了src、gen、android library的內容全部刪除掉,接下來把src下的文件進行替換,把實例中的其他內容全部複製到該project下。

配置構造器

接下來就是配置構造器。在eclipse中選中所導入的項目,右擊,選擇Properties,然後選擇Builders,點擊右側的New,選擇Program,點擊OK,在Main選項卡中填入類似內容:

Location指向Cygwin的bash.exe文件,Working Directory指向Cygwin的bin目錄,而Arguments填入的內容本質上就是向bash.exe傳入的參數,形如:
--login -c "cd /cygdrive/d/Java/Experiment/SanAngeles && $NDKROOT/ndk-build"
其中的第一個參數cd /cygdrive/d/Java/Experiment/SanAngeles,指向你的項目根目錄即可,即:
cd /cygdrive/項目根目錄
第二個參數$NDKROOT/ndk-build中的名稱NDKROOT是根據你自己在/home/用戶名/.bash_profile文件中的配置而決定的,你使用什麼名稱相應寫爲什麼名稱。
然後選擇Refresh選項卡,做如下配置:

選擇第一項,然後進入Build Options選項卡,選擇後三項,然後Specify Resources爲你的Project。
最後,把你所新建的構造器up爲第一個,保證.so文件在修改後首先構建完成。

從頭建立Android NDK項目

首先,新建Android Project,在src下新建.java源文件,通過native關鍵字聲明本地方法,然後,通過命令行進入項目的bin文件夾下,輸入命令:

javah -classpath classes -d jni 包名.class文件名

注意沒有.class後綴,即可生成.h頭文件。-classpath指定查找class文件的一個臨時路徑,-d jni意爲把生成的.h頭文件放入新建的jni文件夾下。

得到.h頭文件後,新建.c文件,把.h頭文件中的函數拷入.c文件,實現這些函數。

函數實現完成後,新建Android.mk文件,這時要注意該文件內容的格式,格式不對時會出現錯誤,具體如下:


這時拷過來一個格式正確的Android.mk文件,在此文件的基礎上做修改即可。

隨後就是爲你的ndk項目新建一個構造器,然後就可以創建所建立的java類的對象調用通過C語言實現的方法了。

以上就是我在學習android ndk時的一些有必要做總結的情況。

還是那句話,真正關鍵的是C/C++。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章