是否有使用JNI动态添加本机挂钩的方法?我的意思是,我想覆盖一个类(或新类)中的某些方法,以便该覆盖调用我的本机代码,而无需为此编写任何Java代码。
答案 0 :(得分:0)
如果您引用的是native
方法,也许注册可能是您的答案。
例如,在这里,我正在注册本机方法
JNIEXPORT jint JNICALL addOne(JNIEnv *env, jclass obj, jint a) {
return a + 1;
}
...
...
static JNINativeMethod methods[] = {
{"addOne", "(I)I", (void *)&addOne}
};
...
...
(*env)->RegisterNatives(env, cls_Main,
methods, sizeof(methods)/sizeof(methods[0]));
将分配给班级
public class Main {
public static native int addOne(int a);
...
...
}
完整示例:https://github.com/mkowsiak/jnicookbook/tree/master/recipeNo052