JNI在Android webkit源代码中起作用

时间:2012-09-27 11:25:57

标签: android webview webkit java-native-interface

I read that JNI函数(本机C部分)非常复杂,必须包含java包名。

然而,在阅读Android webkit源码时。例如WebView.java

中的nativeMoveGeneration函数
private native int      nativeMoveGeneration();

它调用WebView.cpp

中的JNI函数
static int nativeMoveGeneration(JNIEnv *env, jobject obj)
{
    WebView* view = GET_NATIVE_VIEW(env, obj);
    if (!view)
        return 0;
    return view->moveGeneration();
}

Ihis JNI功能不遵循命名规则。为什么?

P / S:上述功能仅用于演示。我正在阅读Android 4.0.3源代码,因此它可能与上面的github源代码不同

更新 感谢@Alex Cohn和这个JNI Tips,我知道我们可以使用JNI_Onload或使用复杂的名称。但是我们应该把JNI_Onload放在哪里?

1 个答案:

答案 0 :(得分:1)

JNI定义了特殊功能 JNI_OnLoad 。它在调用任何JNI方法之前调用,并且可以使用指向任何C函数的指针填充本机方法表。见the official document