2014年12月25日

Android: NDK 測試範例

1. 下載安裝 Android NDK
     例如我將64bits版本的NDK安裝到 E:/dev/SDKs/android-ndk-r9b-windows-x86_64/

2. 下載安裝 Cygwin
     安裝時記得包含Devel中的make 和 Shells中的bash

3. 用Eclipse編譯個簡單的Android Project,內容如下
package com.wsj.android.testjni;
import ......;
public class HelloNDK extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_hello_ndk);
System.loadLibrary("hellondk");    //載入原生程式庫
int result = sayHello();                       //呼叫原生函數 
Log.i("HelloNDK", "" + result);
}
private native int sayHello();           //宣告原生函數
}

4. 產生Java Native Interface(JNI)
在DOS視窗下,進到上面Android Project的目錄E:\Users\wsj\workspace_test\TestJNI,然後執行

javah.exe -classpath <Android SDK目錄>\platforms\android-8\android.jar;bin/classes -d jni  com.wsj.android.testjni.HelloNDK

執行後會產生子目錄 jni,其中有個標頭檔 com_wsj_android_testjni_HelloNDK.h

5. 在jni子目錄中編輯com_wsj_android_testjni_HelloNDK.c檔案,內容如下

#include "com_wsj_android_testjni_HelloNDK.h"
JNIEXPORT int JNICALL Java_org_pielot_hellondk_HelloNDK_sayHello
 (JNIEnv * env, jobject obj) {
 return 34;
}

再編輯Android.mk檔案,內容如下

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE    := hellondk
LOCAL_SRC_FILES := com_wsj_android_testjni_HelloNDK.c
include $(BUILD_SHARED_LIBRARY)

6. 在jni子目錄中執行
E:/dev/SDKs/android-ndk-r9b-windows-x86_64/ndk-build

成功後就會產生libs/armeabi/libhellondk.so程式庫了。

7. 最後在Eclipse中執行此Project,就會成功呼叫到程式庫中的函數了!



沒有留言: