使用Eclipse開發DNK,個人感覺更加的友好、容易。因此在Eclipse下搭建了一個NDK開發環境和開發流程。
一般的,首先要搭建Android開發環境,eclipse + jdk + adt + sdk 即可。
這裡重點講解ndk開發開發流程。我使用的是android-ndk-r14b
開發包。到網上下載
NDK,解壓即可。
配置ndk環境
操作流程:window ----->preferences------>Android------>NDK
然後將剛剛解壓的ndk下的build
導進來即可。
NDK開發流程
1)、新建Android專案 2)、建立類,編寫本地方法
3)、使用javah
命令生成.h
標頭檔案。專案右鍵--->Android Tools------->add native support。這樣就可以生成jni
目錄,將生成的標頭檔案放到jni
目錄下。
4)、Android.mk檔案配置so
庫名。
5)、我們看到標頭檔案會出現錯誤,需要匯入jni.h
等標頭檔案
專案右鍵---->properties----->C/C++ Gerneral------>Paths and Symbols 新增入需要的標頭檔案。
將上圖所示的ndk下的路徑add進來。
這樣就可以了,在目錄下包含一個includes目錄。
6)、實現標頭檔案中定義的函式
7)、build project編譯生成.so動態庫
8)、載入動態庫
9)、呼叫本地方法
10)、執行結果
以上就是eclipse下的ndk開發流程。
給出各檔案內容
MainActivity
private TextView mTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView = (TextView)this.findViewById(R.id.mytext);
mTextView.setText(NDKTest.getStrFromJNI());
}
複製程式碼
NDKTest
public class NDKTest {
public native static String getStrFromJNI();
static{
System.loadLibrary("myndk");
}
}
複製程式碼
com_example_ndkfile_NDKTest.h
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_example_ndkfile_NDKTest */
#ifndef _Included_com_example_ndkfile_NDKTest
#define _Included_com_example_ndkfile_NDKTest
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_example_ndkfile_NDKTest
* Method: getStrFromJNI
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_com_example_ndkfile_NDKTest_getStrFromJNI
(JNIEnv *, jclass);
#ifdef __cplusplus
}
#endif
#endif
複製程式碼
myndk.c
#include "com_example_ndkfile_NDKTest.h"
#include <jni.h>
JNIEXPORT jstring JNICALL Java_com_example_ndkfile_NDKTest_getStrFromJNI
(JNIEnv *env, jclass jcls){
return (*env)->NewStringUTF(env,"hello formjni");
}
複製程式碼
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := myndk
LOCAL_SRC_FILES := myndk.c
include $(BUILD_SHARED_LIBRARY)
複製程式碼