gpt4 book ai didi

c++ - 使用 android_native_app_glue.c 时可以从 java 调用 native 代码吗

转载 作者:行者123 更新时间:2023-11-28 05:34:58 25 4
gpt4 key购买 nike

我正在查看 MoreTeapots 示例:

https://github.com/googlesamples/android-ndk/tree/master/MoreTeapots

我发现使用 android_native_app_glue.c 通过使用此方法从 C++ 代码调用 Java 方法很容易:

jclass clazz = jni->GetObjectClass(app_->activity->clazz);
jmethodID methodID = jni->GetMethodID(clazz, "updateCamera", "(FFF)V");
jni->CallVoidMethod(app_->activity->clazz, methodID, x, y, z);

但是,我可以在该示例中执行相反的操作吗?

在 java 代码中声明一个函数并调用 native 代码。请注意样本使用“胶水”;因此,答案不仅仅是这些步骤:

https://developer.android.com/ndk/samples/sample_hellojni.html

不一样。我没有看到从 java 到 glue 的钩子(Hook),只有从 glue 到 java 的钩子(Hook)。我相信胶水在它自己的线程中运行。

有线索吗?

谢谢!

最佳答案

你可以在你的本地代码中声明一个回调

JNIEXPORT void JNICALL Java_package_Activity_nativeCallback(JNIEnv* jenv, jobject obj);

然后从 Java 代码中声明为原生

native void nativeCallback();

请记住,这是在主线程中执行的,您应该将命令发送到后台线程进行处理。

最好的问候。

关于c++ - 使用 android_native_app_glue.c 时可以从 java 调用 native 代码吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38536642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com