Android 深入系统完全讲解(11)

Posted 程序员入门进阶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 深入系统完全讲解(11)相关的知识,希望对你有一定的参考价值。

9 framework 内容组成

狭义的 framework,主要讲的就是 SystemServer 里面的所有服务,这些是在 framework,
而广义的就是包含了 rec,native 服务,系统 app 等一切分不出去的模块,所以 framework
要能做好,需要的知识非常全面。

系统需要学习,操作系统相关的知识,HIDL,AIDL,权限,Rec 模块,Input,ANR,需要掌
握的语言主要是 Java C++ C。

而技术栈里面需要跨进程通信,多线程,互斥锁,JNI,Linux 相关的驱动概念。

于是这个书里面就是解决这些问题,主要是系统流程,调试技巧,还有一些系统工具的分析,
使用,我们继续往下看,边讲边学。

我这个书里面不会分析 PMS 和 WMS 的启动过程,这个网上是有的,希望训练营学习的过程
中,能够动手分析,然后跟我实时交流成果。

10 SystemServer 和 ServiceManager 的关系

ystemServer 是 android 系统中非常重要的进程,创建了一堆系统服务,提供给 APP 跨进程
通信,而通信的方式是使用 Binder。

而 Binder 的流程是,查询服务对应的进程号,线程号,然后调用对应的方法号,完成后返
回到调用进程。

而如何查询服务对应的进程号,线程号这些,就是 ServiceManager 负责的活。SystemServer
创建服务之后,比如 AMS,会使用 addservice 方法把它注册到 ServiceManager 里面去。

我们讲了 SystemServer,我们今天说下 ServiceManager 的相关流程,让大家对这个有个概念。


那么我们找到这个代码,去看看 main 方法。service_manager.c 是对应的入口文件,打开查
看:(它的启动过程是 init 解析 rc 文件创建的)


binder_open 打开 binder
binder_become_context_manager 变成 BINDER_SET_CONTEXT_MGR ,也就是我们其他进程
找的时候,可以依据这个定位到 ServiceManager,然后最后就是循环,等待查询命令。
binder_loop


读取传递过来的信息,然后解析,执行,具体的话就是 BR_TRANSACTION,BR_REPLY,大家
自行阅读,如果有疑问随时提问。

以上是关于Android 深入系统完全讲解(11)的主要内容,如果未能解决你的问题,请参考以下文章

Android 深入系统完全讲解(33)

Android 深入系统完全讲解(33)

Android 深入系统完全讲解(31)

Android 深入系统完全讲解(31)

Android深入系统完全讲解(38)

Android深入系统完全讲解(38)