使用JNI将android(Java)链接到chrome(cpp)

时间:2014-03-03 14:04:47

标签: android java-native-interface chromium

我正在尝试修改android上的chrome用于研究目的。

Chromium带有ContentViewCore.java class。该类调用本机函数:

nativeEvaluateJavaScript(mNativeContentViewCore, script, null, true);

此方法在以下相同的类中定义:

private native void nativeEvaluateJavaScript(long nativeContentViewCoreImpl,
        String script, JavaScriptCallback callback, boolean startRenderer);

该类具有以下注释:

@JNINamespace("content")

据我所知,JNI Generator将这些方法与正确类的正确本机(c ++)方法联系起来。

我的问题: ContentViewCore.java链接到哪个类?我在哪里可以找到nativeEvaluateJavaScript的实现?在哪里定义特定的java类链接到特定的c ++类?

我唯一能找到的是content_view_core.h(src / content / public / browser / android),但该文件不会让我更进一步。 Googeling为'nativeEvaluateJavaScript'没有透露任何信息。我现在已经找了大约10个小时,而且我没有接近。

1 个答案:

答案 0 :(得分:3)

JNI生成器将在构建期间在“(SHARED_INTERMEDIATE_DIR)/<(jni_gen_package)/ jni /”下生成JNI绑定文件。

例如,ContentViewCore.java的相应JNI绑定文件是“out / Debug / gen / content / jni / ContentViewCore_jni.h”。你可以看到'nativeEvaluateJavaScript'的原生方法:

static void EvaluateJavaScript(JNIEnv* env, jobject jcaller,...