NDK開發通常分爲一下幾個步驟:(默認你已經安裝好了NDK和android開發環境)java
1.建立一個項目android
2.建立JNI目錄windows
3.編寫nativejava層方法ui
4.生成JNI頭文件spa
(1)編寫javaNative代碼
(2)執行命令javah
(3)添加android.jar包到環境變量.net
5.建立一個.c文件導入相應的頭文件3d
6.在jni目錄下添加mk文件。orm
7.最後在項目路徑下執行ndk-build命令。blog
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