来自Java的Android Binder本地服务调用

3
我创建了一个本地Binder服务,有几种交易类型。
目前,我为客户端创建了本地代理(Bp),但我想给Java客户端使用我的服务。
基本上,我认为Bp应该是Java。我找到了一些关于JNI的东西,但不完整。我需要在Bn中使用JNI吗?
此外,回调机制(从服务到特定客户端方法的偶发事件)应该可用。我已经在原生环境中完成了这个功能。

我已经成功地使用这里的示例 https://github.com/cloudchou/NativeBinderJavaClientDemo/blob/master/FClient/src/com/cloud/test/CloudManagerProxy.java 进行了简单的调用。从本地到JNI的回调和复杂数据结构的传输仍然是一个问题。 - Cumatru
1个回答

0

这是我第一次回答...

正如Cumatru所提到的,我也使用了https://github.com/cloudchou/NativeBinderJavaClientDemo

我还没有完全理解整个过程,但至少它可以工作,并且这是一个以相当“简单”的示例前进的方式。我处于非常基础的Android水平上,请您谅解并帮助改进答案。

似乎有三个部分: 1. 用c++编写的服务器进程。 2. Android应用程序客户端。 3. 一个简单的Java客户端,将被构建成.jar文件。

至少对于简单的Java客户端和c++服务器,不需要对代码进行任何更改。

  • 构建并将服务器应用程序推送到目标设备。在adb shell中运行它。
  • 构建并将Java客户端(.jar文件)命名为fclient,推送到/system/framework/目录下。
  • 使用fclient脚本运行Java客户端
  • 从客户端发送的两个整数将被加起来,并回复给服务器。

希望这对您也有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接