【问题标题】:Android How to share memory between NDK and SDKAndroid 如何在 NDK 和 SDK 之间共享内存
【发布时间】:2018-02-13 15:34:55
【问题描述】:

我想处理一个确定设备安全级别的逻辑。

该逻辑是用 C++ 编写的,而且运行良好。我返回的是 int 或 jstring。

我有一个与我的本机代码通信的 java 类。

出于安全原因,我不想通过我的 java 方法返回值获得响应。因为有一些钩子工具,用它可以改变传给任何java方法的返回类型和参数。

我的目标是将结果存储在 C++ 的内存中,并且必须在 java 代码中访问。

【问题讨论】:

标签: java android c++ android-ndk


【解决方案1】:

据我所知,这是不可能的,您可以尝试在 Java 中创建一个对象并将其传递给 C++,存储您需要的信息,然后在 Java 端读取它。

【讨论】:

  • 问题是我仍然需要以对象作为参数调用Java方法,可以通过挂钩进行修改。我想在 C++ 中调用一个函数,而不需要传递任何参数,也没有 C++ 函数的返回类型。 C++ 函数结果存储在公共内存中,并且可以从 Java 方法访问。
  • 那么最好的方法是什么?
  • 您可以在没有来自 Java 的任何参数的情况下调用 C++ 方法,一旦它到达 C++ 方法,您就可以访问使用 JNIEnv* 调用它的 Java 对象的对象参数和传递的 jobject java环境默认为C++。有了这个,您实际上可以访问您想要的变量或调用 C++ 的对象中的函数。这是示例链接Examples 转到第 5 节。
猜你喜欢
  • 1970-01-01
  • 2010-12-03
  • 1970-01-01
  • 2015-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-19
  • 2015-06-04
相关资源
最近更新 更多