05 2016 档案

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