我读到JNI 函数(本机 C 部分)非常复杂,必须包含 java 包名称。
但是,在阅读 Android webkit 源码时。例如WebView.javanativeMoveGeneration
中的函数
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();
}
他的 JNI 函数不遵循命名规则。为什么?
P/S:以上功能仅供演示。我正在阅读Android 4.0.3源码,所以可能与上面的github源码不同
更新 感谢@Alex Cohn 和这个JNI Tips,我知道我们可以使用 JNI_Onload 或使用复杂的名称。但是我们应该把 JNI_Onload 放在哪里呢?