Vin*_*y99 12 c++ android android-service android-binder
我的基本任务是在android中创建本机服务,然后编写一个简单的本机程序来测试它.让我说我想写一个简单的服务,它返回2个整数的总和.我必须使用粘合剂从程序中与它交谈,我试图谷歌,但我找不到一个确切的例子.我需要知道如何创建本机服务并在程序中找到它,如果需要也可以在Java中找到它.
Adr*_*lor 13
如果您使用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
你的选择是:
ServiceAndroid SDK 的普通和AIDL工具在Java中完成.如果您希望将其与本机代码结合使用,则可以使用JNI从本机代码调用Java.Vin*_*y99 11
我找到的解决方案是在本机中使用Binders并使用
defaultServiceManager()->addService(
        String16("TestService"),new CalcService());
然后使用绑定器并在客户端使用以下.
sp<IServiceManager> sm = defaultServiceManager();
sp<IBinder> binder = sm->getService(String16("TestService"));
我在这里找到了如何执行此操作的示例:https: //github.com/gburca/BinderDemo/blob/master/binder.cpp
在对@Android NDK 进行学习和编码后,我发现Android NDK 中没有Binder API 。即使你使用android开源来调用binder api,你可能会因为binder安全检查而被拒绝。
这里如果我想在系统服务中添加一个服务,我需要一个系统级用户组。详细代码可以在https://github.com/qianjigui/android_system_service_example找到。它包含 C 和 Java 级别的客户端和服务,但您需要系统权限。
| 归档时间: | 
 | 
| 查看次数: | 40323 次 | 
| 最近记录: |