【NDK開發】android-ndk r10環境搭建

1)打開Android開發者的官網http://developer.android.com/找到Develop點擊。若是頁面打不開,經過代理來訪問。java

 

2)進入後再點擊Toolsandroid

 

3)進入後在左側找到NDK點擊,能夠見到各類平臺的NDK r10。shell

 

選擇須要的下載windows

 

 

5)解壓下載的android-ndk32-r10-windows-x86_64.zip,將其放到你想要的目錄下。函數

注:R7以前的版本,必需要安裝Cygwin才能使用NDK。從R7開始,Windows版本的NDK提供了一個ndk-build.cmd腳本,能夠直接利用這個腳本編譯。想要作到這一 點,只要爲Eclipse Android工程添加一個Builder,就能實現Eclipse的自動編譯NDK,這一點在後面的步驟會有介紹。ui

 

 

6) NDK實例的實現spa

啓動Eclipse,新建Android工程(此處名爲TestNDK),如圖所示:.net

 

 

7)在TestNDK工程的根目錄下新建文件夾jni,以後找到NDK的安裝目錄(sampleshello-jnijni)下的 Android.mk和hello-jni.c 這兩個文件,將其拷貝到TestNDK->jni文件夾下面。3d

 

注:若是你很好奇jni文件夾裏的hello-jni.c裏的函數命名如此刁鑽,是怎麼寫的,而且你若是你想的更遠,已經在考慮本身之後怎麼寫這種文件,那麼我告訴你它裏面的函數命名是直接粘貼的一個頭文件裏的內容。這個頭文件能夠經過反編譯下邊提到的HelloJni.java獲得。若是你之後要確實要進行NDK開發,那麼你確定要掌握反編譯的方法。爲了你可以少走彎路,推薦個人另外一篇文章《1分鐘攻克NDK開發中javah不能反編譯的問題》,連接網址http://blog.csdn.net/golden1314521/article/details/23039417 。代理

 

8) 找到NDK的安裝目錄(sampleshello-jnisrccomexamplehellojni)下的HelloJni.java文件,將其拷貝到TestNDK工程src文件夾對應的包下。

 

 

9) 修改項目文件AndroidManifest.xml,將activity標籤下的 android:name =「com.zhw.testndk. MainActivity」修改成 android:name =「com.example.hellojni.HelloJni」。(注:此處的

TestNDKACtivity爲項目自動生成的,項目不一樣,此處也會不一樣)

 

10) 新建並配置一個Builder

點擊Project->Properties->Builders->New,新創建一個Builder。在彈出的對話框上面點擊Program,OK!如圖所示

 

在彈出的對話框【Edit Configuration】中,配置選項卡【Main】:

Location中須要填入nkd-build.cmd的路徑(NDK安裝目錄下)。

Working Diretcoty中須要填入TestNDK的工程根目錄。如圖所示:

注:不要漏了

 

 

配置選項卡【Refresh】,如圖所示:

勾選「Refresh resources upon completion」,

勾選「The entire workspace」,

勾選「Recuresively include sub-folders」。

 

 

配置選項卡【Build Options】,如圖七所示:

勾選「After a 「Clean」」,

勾選「During manual builds」,

勾選「During auto builds」,

勾選「Specify working set of relevant resources」。

點擊「Specify Resources…」勾選TestNDK工程的「jni「目錄 ,Finish!

 

 

當在console裏面看到如圖八所示的信息,則表示一切正常,此時就已是自動編譯代碼了。

注:若是不成功:Project->clean->選擇工程->點擊OK

 

 

假如你使用的是NDK-R9版本中的例子,你在console裏面會看到比上圖要多的編譯信息,截圖以下

這時候你要檢查一下工程根目錄下的libs目錄下的子目錄,要刪除libs中多餘的子文件夾,只留下armeabi文件夾和以jar爲後綴名的jar包。

 

 

10)右鍵點擊工程TestNDK,Run As -> Android Application, 運行程序。當出現圖所示信息時,NDK實例運行成功!

 

 

若是程序運行出錯,顯示「應用程序**(進程:com.example.***)意外中止,請重試」的錯誤提示

 

這個錯誤產生的緣由極有多是你的JNI文件的命名或包的聲明寫錯了。查一下程序運行的日誌logcat,顯示錯誤爲「java.lang.UnsatisfiedLinkError:stringFromJNI」,說的是Java層調用本地方法stringFromJNI時,卻沒有找到這個本地方法,因此除了錯。

 

那麼Android虛擬機怎麼查找這個本地方法的呢?先說一下Android工程的環境:包名稱是com.example.testndk,應用名稱是HelloJni,若是Java層調用了本地方法String stringFromJNI(),那麼Android虛擬機就會由這三個變量生成一個名字:jstring Java_com_example_testndk_HelloJni_stringFromJNI( JNIEnv* env, jobject thiz ) ,並在本地方法中嚴格按照這個名字查找同名的本地方法。若是找不到,就會返回上圖的錯誤。因此要確認一下JNI文件的命名或包的聲明是否與Java文件中的一致。

 

在本地文件(即C或C++文件)改正此錯誤後,運行,正常顯示。

相關文章
相關標籤/搜索