Windows平臺下如何使用Android NDK

   鑑於有些同窗想要學習NDK,但在網上很難找到一個講解比較清楚、按照步驟操做能夠比較順利學會NDK的文章,因此寫了此篇教程。java

一.學習本篇教程須要具有的條件:android

1. 瞭解JAVA中JNI的概念、好處以及使用方法,網上不少介紹,這裏就不重複了。c++

2. 你的電腦配置好了Android應用開發環境,即:JAVA、Eclipse、ADT和Android SDK。windows

二.準備bash

須要Android NDK和windows下c、c++代碼的編譯器cygwineclipse

android-ndk-r6-windows.zip下載地址:http://u.115.com/file/clvyxr0b編輯器

cygwin下載地址:http://u.115.com/file/clvy46eb學習

三.配置測試

1. 解壓縮NDK和cygwin,並配置cygwin的環境變量。ui

例如:我解壓縮到D盤根目錄,那麼在環境變量的path中添加:」D:\cytwin\bin;」,

以下圖所示。

clip_image002

2. 在命令行中進入cygwin目錄,並執行cygwin.bat,若是你不是用Administrator帳號登陸的系統,那麼會在cygwin\home\文件夾中生成一個以你的登陸名命名的新的文件夾。

clip_image004

3. 修改新生成文件夾中的「.bash_profile 」文件,用UE或editplus等文本編輯器打開,在最後增長:

NDK=/cygdrive/d/android-ndk-r6

export NDK

而後保存關閉。

d/android-ndk-r6表示ndk在d盤,若是你的ndk放到了其餘盤符或路徑,例如放到e:\sdk目錄中,那麼就改成e/sdk/android-ndk-r6。

(若是是Administrator帳號登陸,直接修改Administrator文件夾中的文件。)

clip_image006

四.開始使用

1.在命令行窗口中進入cygwin目錄,執行cygwin.bat

2.進入android-ndk中的samples文件夾裏的某個項目文件夾,這裏以hello-jni爲例

進入文件夾的方式與MS-DOS相似,用cd + 空格 + 盤符+ 路徑便可,例子見下圖

3.執行$NDK/ndk-build編譯

clip_image008

4.例子編譯成功後導入Eclipse中,編譯並部署測試如圖:

clip_image010

五.如何在本身的工程中使用NDK

Android-ndk中的例子你們會編譯了,那麼在本身現有的工程想要調用本地方法應該怎麼作呢?

1.在JAVA代碼中聲明native方法,

clip_image012

2.生成頭文件

而後須要生成C或C++的源碼,供JAVA調用。

能夠按照JNI的命名規則,也可使用JDK的javah命令來生成,這裏推薦使用javah,避免手動編寫出現錯誤很差排查。

javah命令的使用方法見javah命令的幫助

clip_image014

這裏以個人測試工程爲例,編寫好native方法後,編譯工程,eclipse會在bin目錄生成.class文件,在命令行中進入bin目錄,執行javah + 包名 + 類名,會在bin目錄下生成一個頭文件。

clip_image016

clip_image018

這個文件就是JAVA與本地代碼交互的接口了,作C或C++的開發人員針對這個頭文件開發。

3. 編寫本地方法

在你的工程根目錄下建立jni文件夾,並從android-ndk\samples裏的hello-jni文件夾中拷貝出一個Android.mk文件,粘貼到jni文件夾中,同時剛纔用javah生成的.h頭文件拷貝到jni文件夾中。

首先建立一個.c文件,實現頭文件中的方法,

clip_image020

而後編輯Android.mk文件,修改以下兩行,第一行修改成你的工程名,第二行修改成你的.c或.cpp文件名

LOCAL_MODULE := EX25_JNI

LOCAL_SRC_FILES := org_yuchen_demo_MainActivity.c

4.在java代碼中加載so文件

在java代碼中用靜態塊加載so文件,注意把so文件的「lib」和「.so」擴展名去掉。

clip_image022

5.使用本地方法

接下來在java中能夠調用本地方法進行測試了。按照前面講解的方法編譯,打包部署測試,截圖以下:

clip_image024

相關文章
相關標籤/搜索