1.編寫接口java 文件
package com.liux.example.jnitest;
public class JniTest {
public native static void sayHello();
public native static String stringFromJNI();
}java
2. 根據該文件生成相應的.h文件(com_liux_example_jnitest_JniTest.h),命令以下:
javah -cp app/build/intermediates/classes/debug/ -d jni com.liux.example.jnitest.JniTest
注意:
若是是用得Activity做爲含有native方法的接口類:須要包含相應的支持包:
javah -cp ~/Android/Sdk/extras/android/support/v7/appcompat/libs/android-support-v7-appcompat.jar:
~/Android/Sdk/extras/android/support/v4/android-support-v4.jar:~/Android/Sdk/platforms/android-23/android.jar:
~/android_workspace/JniTest/app/build/intermediates/classes/debug/ -d jni com.liux.example.jnitest.HelloJni
(windows分割方式爲';',linux下爲':')
linux
3.編輯.c文件(hello-jni.c),內容以下:
#include <jni.h>
#include <android/log.h>android
#define LOG_TAG "native-dev"
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)git
JNIEXPORT void JNICALL Java_com_liux_example_jnitest_JniTest_sayHello
(JNIEnv* env, jobject obj) {
__android_log_print(ANDROID_LOG_INFO, LOG_TAG, "Need to print : %d %s",1, "hello-jni");
};github
JNIEXPORT jstring Java_com_liux_example_jnitest_JniTest_stringFromJNI( JNIEnv* env,
jobject thiz ){windows
return (*env)->NewStringUTF(env, "Hello from JNI ! Compiled with ABI .");
}app
4.編輯Android.mk,內容以下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hello-jni
LOCAL_SRC_FILES := hello-jni.c
LOCAL_LDLIBS := -lm -llog
include $(BUILD_SHARED_LIBRARY)ui
5.編輯Application.mk,內容以下:
APP_ABI := allspa
6.生成.so
~/download/android-ndk-r10e/ndk-builddebug
7.把生成的libs文件夾拷貝到app下
8.運行程序