05 2016 档案
摘要:还从客户端代码看起TestClient.cpp:14 sm getService(...)返回了什么? 其中第2行 返回的是 这在 "《 defaultServiceManager()返回了什么?》" 中有分析。 接下来的 在 "《ServiceManager如何响应checkService请求》"
阅读全文
摘要:之前在博客园、简书、CSDN等地儿都开过博,一篇文章写好了,我希望能在几个平台可以同步发布,可是操作起来成本不低。几个平台下的富文本编辑器比较起来还是博客园更顺手,看着更舒服,尤其是代码块的操作灵活、准确。而CSDN对代码块内的文字加粗、修改字色后就会出现html文无法解析的情况,混杂着代码和htm
阅读全文
摘要:有了《ServiceManager如何响应checkService请求》的探索,研究addService就轻车熟路了,中间过程不再多说,仅把关键节点列出: frameworks/native/cmds/servicemanager/service_manager.c:347 frameworks/n
阅读全文
摘要:在checkService的调查中我们知道客户端向ServiceManager请求服务名,ServiceManager根据服务名遍历本地链表,找到匹配的handle返回给客户端。这个handle显然是由服务端注册的,这个handle究竟是什么?要先搞清楚这个问题,必须研究服务端和ServiceMan
阅读全文
摘要:前文中曾经遇到过Parcel,从命名上知道他负责数据打包。在checkService的请求/响应体系中,Parcel只打包了基本数据类型,如Int32、String16……后面还要用于打包抽象数据类型flat_binder_object,这会稍微复杂一些,因此有必要拿出来单独研究。我们从Parcel
阅读全文
摘要:这要从frameworks/native/cmds/servicemanager/service_manager.c:347的main函数说起,该文件编译后生成servicemanager。 接下来遇到se_xxx相关的数据结构和函数,未来我们还会遇到。他们是Android系统提供的安全机制,负责管
阅读全文
摘要:起点从TestClient.cpp的main函数发起: 前文已经分析过sm是new BpServiceManager(new BpBinder(0)),于是sm->getService(…)的行为应该找BpServiceManager::getService(…),frameworks/native
阅读全文
摘要:不管是客户端还是服务端,头部都要先调用 defaultServiceManager()都干了什么,它返回的是什么实例呢? 该函数定义在frameworks/native/libs/binder/IserviceManager.cpp:33 关键步骤可以分解为几步:1、ProcessState::se
阅读全文

浙公网安备 33010602011771号