Android开发值JNI函数动态注册

来源:互联网 发布:beoplayer安卓版 软件 编辑:程序博客网 时间:2024/06/01 08:46
static jstring dy(JNIEnv *env, jobject obj) {    return env->NewStringUTF("HelloJNI.SO");}JNINativeMethod nativeMethod[] = {        {"dy", "()Ljava/lang/String;", (void *) dy}};JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *jvm, void *reserved){    JNIEnv *env;    if (jvm -> GetEnv((void**) &env, JNI_VERSION_1_6) != JNI_OK)    {        return JNI_ERR;    }    jclass  cls=env->FindClass("org/love/foyou/myjni/Ha");    env -> RegisterNatives(cls, nativeMethod, sizeof(nativeMethod) / sizeof(nativeMethod[0]));    return JNI_VERSION_1_6;}

说明:这个方法是动态注册的本地方法

static jstring dy(JNIEnv *env, jobject obj) {    return env->NewStringUTF("HelloJNI.SO");}

说明:Java与JNI方法的映射数组

JNINativeMethod nativeMethod[] = {        {"dy", "()Ljava/lang/String;", (void *) dy}};

说明:在Java中执行加载库后就会执行这个,==》函数动态注册

JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *jvm, void *reserved){    JNIEnv *env;    if (jvm -> GetEnv((void**) &env, JNI_VERSION_1_6) != JNI_OK)    {        return JNI_ERR;    }    jclass  cls=env->FindClass("org/love/foyou/myjni/Ha");    env -> RegisterNatives(cls, nativeMethod, sizeof(nativeMethod) / sizeof(nativeMethod[0]));    return JNI_VERSION_1_6;}
原创粉丝点击