关闭。这个问题需要更加突出重点。它目前不接受答案。
**想改进这个问题吗?**通过编辑这篇文章更新这个问题,使它只关注一个问题。
上个月关门了。
改进这个问题
我正在开发一个应用程序,其中我有一个java应用层和一个c++插件服务。我需要从应用层调用本机代码api,应用层将通过aosp框架开发的jni层调用。
现在的问题是,我需要将一块数据从应用层传递到本机层,本机层将通过jni调用传递到本机层。
我不想直接传递数据,而是希望使用sharedmemory(或任何有效的方法)。有人能告诉我如何将数据从应用层传递到本机代码吗?
有没有任何方法可以在本机层中分配内存,并从应用程序层访问该内存位置以将数据存储到该内存位置?
我不能使用用户实现的jni层。
1条答案
按热度按时间deikduxw1#
简而言之:没有。
长话短说:你提到了aosp,所以我假设你正在使用android操作系统。
aosp中的jni实现非常特殊,您只能通过函数参数和原语返回值与之通信。
使用jnienv方法在本机代码中创建java对象的新示例是可能的,但是非常不鼓励这样做。
一般来说,通过jni在java和native之间移动大量数据的整个过程是有问题的。
请阅读以下内容以了解更多详细信息:https://developer.android.com/training/articles/perf-jni