我的基本任务是在 android 中创建一个本地服务,然后编写一个简单的本地程序来测试它。假设我想编写一个简单的服务,返回两个整数之和。我必须使用 Binder 从程序中与它对话,我试图用谷歌搜索但我找不到一个精确的例子。我需要知道如何创建 native 服务并在程序中找到它,如果需要还可以在 Java 中找到它。
最佳答案
如果您使用 NDK 创建普通的 Android 应用程序,则不能使用 Binder,因为它不是 NDK API 的一部分。
在 NDK docs/STABLE-APIS.html 中查看完整的稳定 API 列表,以及此线程中 David Turner(NDK 维护者)的明确评论,即 Binder 不是受支持的 API。
https://groups.google.com/forum/?fromgroups=#!topic/android-ndk/1QmVRrNckfM
您的选择是:
- 在 native 代码中使用其他形式的 IPC - 例如 UNIX 域套接字
- 使用 Android SDK 的普通
Service
和 AIDL 工具,用 Java 实现。如果您希望将其与 native 代码结合使用,您可以使用 JNI 从 native 代码调用 Java。 - (不推荐)从 Android 开源项目中复制相关的库和 header ;构建到您的 NDK 项目中;并使用 API。然而,这并没有得到官方支持,并且极有可能在未来的版本中破坏您的应用程序,因为谷歌没有义务维护此类库的兼容性(而且经常没有)。这也非常困难,因为您需要找到某种方式来注册服务,以便客户端可以找到它。
关于android - 如何创建android原生服务并使用binder与之通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14215462/