1. 程式人生 > >Android NDK之HelloJni工程遇到的問題

Android NDK之HelloJni工程遇到的問題

今天想自己新建一個NDK的工程來跑一跑試試,在整個過程中遇到了不少問題,把一些在網上沒找到方案、自己解決了的問題記錄一下。

參照的教程來自http://www.cnblogs.com/devinzhang/archive/2012/02/29/2373729.html,絕對是良心教程。

自己遇到並解決的問題:

1.在cygwin安裝配置好以後,測試ndk-build命令,報

bash: ndk-build: command not found

錯誤,自然是沒有修改環境變數,於是在PATH後面新增/cygdrive/d/Android/android-ndk路徑,這是我電腦裡NDK的路徑。把修改後的環境變數讀進shell中,再次輸入ndk-build,依然報同樣的錯誤。

這就奇怪了,在網上搜了搜,發現確實是在PATH中新增NDK的路徑就好了。難道是我的NDK根目錄下沒有真正可以用來執行的ndk-build檔案?於是進入目錄下檢視,發現有ndk-build.cmd檔案,但從剛才執行的情況來看,它並沒有什麼卵用。那子目錄下會不會還有其它可用的ndk-build呢?於是在資料夾下搜ndk-build,發現子目錄build下還有兩個ndk-build檔案,一個無後綴,一個字尾還是.cmd,如下圖:


於是想會不會應該在PATH中新增build這個子目錄呢?試了一下,果然如此,ndk-build成功:


2.在用javah生成.h標頭檔案時遇到問題。為什麼要生成.h檔案呢?”剛開始學的時候,有個問題會讓人很困惑,相應的C/C++程式碼如何編寫,函式名如何定義? 這裡講一個方法,利用javah這個工具生成相應的.h檔案,然後根據這個.h檔案編寫相應的C/C++程式碼。“——這就是原因。

按照教程中所說,cd到HelloJni工程目錄下,輸入

javah -classpath bin -d jni com.example.hellojni.HelloJni

命令,然而報com.example.hellojni.HelloJni類沒找到,於是進入到bin目錄下,發現還有個classes子目錄,進去才是依次按包名命名的資料夾,於是修改命令為

javah -classpath bin/classes -d jni com.example.hellojni.HelloJni

,這次不再報類沒找到,而是報

無法訪問android.app.Activity
  找不到android.app.Activity的類檔案

錯誤。上網搜,發現有人說:


,於是試著加入-bootclasspath引數傳入android.jar的路徑,然而還是報同樣的錯誤。於是試試他說的第二個方法,cd到src目錄下,輸入

javah -d ../jni com.example.hellojni.HelloJni

,果然.h檔案生成成功。

之後一路按教程說的做,成功在手機上運行了自己寫的第一個NDK程式。

第一次記錄到部落格,發現真是累……不過解決了問題還是很開心的^ ^