java层代码
package com.example.test;
package android.util.Log;
public class Test {
static {
try {
System.loadLibrary(“healthmonitor_jni”);
} catch (SecurityException ex) {
Log.e(TAG, “System.loadLibrary SecurityException “ + ex);
} catch (NullPointerException ex) {
Log.e(TAG, “System.loadLibrary NullPointerException “ + ex);
} catch (UnsatisfiedLinkError ex) {
Log.e(TAG, “System.loadLibrary UnsatisfiedLinkError “ + ex);
}
}
public Test () {
Log.d(TAG, "Test construct");
native_test();
}
private native void native_test();
}
jni代码
#include <jni.j>
#include <stdio.h>
#include <nativehelper/JNIHelp.h>
#include <Utils/Log.h>
#define JAVA_CLASSNAME_TEST "com.example.test.Test"
using namespace std;
using namespace android;
static void com_example_test(JNIEnv *env, jobject thiz) {
ALOGD("to call native method");
}
static JNINativeMethod sMethods[] = {
{“native_test”, “()V”, (void )com_example_test}
};
static int register_HealthMonitor_jni(JNIEnv *env) {
return jniRegisterNativeMethods(env, JAVA_CLASSNAME_HEALTHMONITOR,
sMethods, NELEM(sMethods));
}
jint JNI_OnLoad(JavaVM* vm, void* ) {
JNIEnv env = NULL;
jint result = -1;
if (vm->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK) {
goto bail;
}
assert(env != NULL);
if (register_HealthMonitor_jni(env) < 0) {
goto bail;
}
result = JNI_VERSION_1_4;
bail:
return result;
}