標籤:
NDK開發一般分為一下幾個步驟:(預設你已經安裝好了NDK和android開發環境)
1.建立一個項目
2.建立JNI目錄
3.編寫nativejava層方法
4.產生JNI標頭檔
(1)編寫javaNative代碼
(2)執行命令javah
(3)添加android.jar包到環境變數
5.建立一個.c檔案匯入相應的標頭檔
6.在jni目錄下添加mk檔案。
7.最後在項目路徑下執行ndk-build命令。
8.最後運行代碼就可以看到結果了。
下面是詳細步驟和:
建立一個android項目就不說了。
然後我們聲明一個native方法
下面我們在項目下面添加一個jni目錄
然後進入cmd控制台進入當前工作的目錄下面:
然後執行javah命令用來產生.h檔案
(其中,D:\android\android_sdk_windows\platforms\android-19\android.jar,
是android sdk目錄下的目錄檔案,為了簡單,可以把android.jar檔案目錄添加到path路徑下;
最後com.example.hellondk_1.MainActivity是包名加類名)
重新整理項目可以看到jni目錄下多了一個.h檔案
然後我們建立一個.c檔案用來實現.h檔案用定義的方法。
建立一個.c檔案匯入相應的標頭檔
(
如:建立一個hello.c檔案
#include<stdio.h>
#include<stdlib.h>
#include"com_example_hellondk_1_MainActivity.h"
JNIEXPORT jstring JNICALL Java_com_example_hellondk_11_MainActivity_getStringFromC
(JNIEnv *env, jclass jclass){
return (*env)->NewStringUTF(env, "Hello from C !....");
}
其中實現了標頭檔中的方法Java_com_example_hellondk_11_MainActivity_getStringFromC(JNIEnv *, jclass);
)
在jni目錄下添加mk檔案。
(這個可以匯入ndk的執行個體下面的mk檔案然後做修改就可以了)如下
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hello
LOCAL_SRC_FILES := hello.c
include $(BUILD_SHARED_LIBRARY)
其中,
LOCAL_MODULE 表示編譯產生的so叫什麼名字
LOCAL_SRC_FILES 表示要編譯的.c檔案是哪個
最後在項目路徑下執行ndk-build命令。
執行完之後對項目進行重新整理可以看到項目下面多了一個obj目錄裡面多了一個.so檔案。
然後在java檔案中添加靜態代碼塊。添加.so檔案。
最後運行代碼就可以看到結果了。
這裡如果你用的是genymotion模擬器,那麼需要對genymotion進行配置要安裝一個genymotion arm translation,下載好之後直接拖拽就可以安裝了。
:
http://download.csdn.net/detail/u014132820/9044875
android NDK 開發步驟