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,就會成功呼叫到程式庫中的函數了!
沒有留言:
張貼留言