c++ 层实现binder服务例子

研究了binder服务的实现,想写个binder例子。

在网上和书上都看到有这类似的例子,照着写后,发现都不是自己想要的,不太符合源码的风格。

就从源码的binder服务精简了一个。

遇到的问题:

1 、frameworks/native/include/binder/IInterface.h:50: error: undefined reference to ‘android::RefBase::~RefBase()‘

原因:没有添加只添加了libbinder 库,没添加libutils库,

2 、ITest.h TestService.h 头文件放在哪里,才能包含。

一开是我是放在framework/av/include/media。

引用时只需#include <media/ITest.h>即可。

但是能不能放在自己定义的任意目录能?如:./test/include/test/ITest.h

#include "ITest.h" 编译找不到头文件。还需要在Android.mk指定头文件路径

LOCAL_C_INCLUDES := $(LOCAL_PATH)/../include/test即可。

3、我的例子里面打印log是用ALOGE等。有的代码库中是LOGE

写例子心得:尽管几行代码我也折腾来两三天。看会的,永远不一定就会了,动手才是应道理。

代码查看地址:https://github.com/langxianwen/binder-demo

git路径:git clone https://github.com/langxianwen/binder-demo.git

时间: 2024-11-12 17:04:36

c++ 层实现binder服务例子的相关文章

在Ubuntu上为Android系统内置Java应用程序测试Application Frameworks层的硬件服务(老罗学习笔记)

一:Eclipse下 1.创建工程: ---- 2.创建后目录 3.添加java函数 4.在src下创建package,在package下创建file 5.res---layout下创建xml文件,命名main 6.project下清楚错误 7.位解决错误 ① ② 8.总体目录 9.当删除工程后,可以import再重新导入工程. 二:源码下 ① 将Hello目录拷贝至packages/experimental目录,新增Android.mk文件:    [email protected]:~/An

Binder学习笔记(六)—— binder服务端是如何组织addService数据的

在checkService的调查中我们知道客户端向ServiceManager请求服务名,ServiceManager根据服务名遍历本地链表,找到匹配的handle返回给客户端.这个handle显然是由服务端注册的,这个handle究竟是什么?要先搞清楚这个问题,必须研究服务端和ServiceManager是如何共同完成一次addService操作的.我们从服务端代码出发.TestService.cpp:30 int main() { sp < ProcessState > proc(Proc

android 一个简单的服务例子

1 public class MessageService extends Service { 2 3 // 获取消息线程 4 private MessageThread messageThread = null; 5 6 // 点击查看 7 private Intent messageIntent = null; 8 private PendingIntent messagePendingIntent = null; 9 10 // 通知栏消息 11 private int messageNo

Android 从硬件到应用:一步一步向上爬 5 -- 在Frameworks层添硬件服务

Android Frameworks层提供了硬件服务,Android系统APP可以调用这些硬件服务,进而完成硬件的控制,实现应有的功能.接着上一篇,这一篇要在frameworks层为应用提供java接口的硬件服务.cd到frameworks/base/core/java/android/os目录,添加 IGpioService.aidl: package android.os; interface IGpioService { void setVal(int val); int getVal()

spring boot 微服务例子一

package com.example.hello.demo; import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.anno

Android native进程间通信实例-binder篇之——HAL层访问JAVA层的服务

有一天在群里聊天的时候,有人提出一个问题,怎样才能做到HAL层访问JAVA层的接口?刚好我不会,所以做了一点研究. 之前的文章末尾部分说过了service call 可以用来调试系统的binder服务. 传送门: Android native进程间通信实例-binder篇之——简单的单工通信 这次可以用到这个命令了! 1. 随机选取一个java层的服务. adb shell 中输入命令 service list,选取一个服务来做研究,这次看中的是 textservices, 注意第一个服务 by

第六章 Binder在Java框架层的实现

Binder在native层的实现为Binder在java层的实现提供了基石,在java层中,无论是四大组件之间的交互还是使用各种XXXService,都要依靠Binder.而且在java层中,binder的实现同样也还是有四个部分:Client.Proxy.Server.Stub四个部分.下面来看: 6.1Java 系统服务的启动 这里以PowerManagerService为例子,它的启动在init2阶段中的ServiceThread类来启动: PowerManagerService pow

Android系统进程间通信Binder机制在应用程序框架层的Java接口源代码分析

文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6642463 在前面几篇文章中,我们详细介绍了Android系统进程间通信机制Binder的原理,并且深入分析了系统提供的Binder运行库和驱动程序的 源代码.细心的读者会发现,这几篇文章分析的Binder接口都是基于C/C++语言来实现的,但是我们在编写应用程序都是基于Java语言的,那么,我 们如何使用Java语言来使用系统的Binder机

从java层到framework到JNI到HAL到kernel的hello 例子

转载自 http://blog.csdn.net/Luoshengyang/article/category/838604/3 在智能手机时代,每个品牌的手机都有自己的个性特点.正是依靠这种与众不同的个性来吸引用户,营造品牌凝聚力和用户忠城度,典型的代表非iphone莫属了.据统计,截止2011年5月,AppStore的应用软件数量达381062个,位居第一,而Android Market的应用软件数量达294738,紧随AppStore后面,并有望在8月份越过AppStore.随着Androi