一铭陈工对Android整体逻辑结构图的理解
2017-08-08 19:15:06
张捷
  • 访问次数: 22
  • 注册日期: 2017-06-27
  • 最后登录: 2017-09-27
  • 当前积分: 182

Android整体逻辑结构图

共分为四大层:
对安卓的框架层又分为两部分: APP端和服务端。

在服务端又分为两部分: java和c++部分。

对于服务端的java部分,主要是策略处理;

服务端的c++部分主要是提供机制。

因为是整体的逻辑结构图,所以同运行时的结构是不一样的。

主要是在框架层:

对于框架层APP端(包括web运行时,绘图和View/widget,应用消息管理,以及框架层整体对上的SDK接口),都是在具体的应用进程内运行的。

框架层的服务端的策略层,则是在system_service进程里运行。里面的关键组件有: 窗口管理服务,活动管理服务,通知管理服务。。。(主要列举的是同图形io和消息相关的点)。

而框架层服务端的机制层,则包括了各个独立的服务,有的是独立进程,例如Surfaceflinger,有的是在system_service进程里(例如inputflinger),还有的实际上是一个服务组集合(例如mediaservice负责多媒体服务,里面包括了mediaplayer服务和audioflinger等)。以上也是重点突出了图形io和多媒体。

中间层的各个库,都可以被各个应用和各个服务使用,所以可以驻留在各个进程内。

内核则属于内核态环境,主要通过系统调用和提供的/dev, /proc, /sys的目录树来对外提供服务。

而框架层服务端机制层各个服务运行时,都是直接同内核提供的服务,以及/dev, /sys, /proc进行交互的,但也需要加载中间层的各个库和hal层来进行处理。

也就是说内核对用户太提供的接口,实际上不仅被HAL层使用,也会被中间层,和框架层服务端机制层使用。

以前我提供过这个图,但只是强调了这个图只是逻辑结构图,却没有具体说明其逻辑结构同系统真实运行之间的关系。

当时主要是认为,以上的信息就够说明问题了,而且配合着其他的信息在一起,已经很多了。

如果再把这些信息加进去,则很可能会导致混乱。

但如果想同Windows的逻辑结构做对比,以及它们各自这么设计的原因和可行性合理性,个人觉得,还是有必要即了解各自的逻辑结构,也需要了解各自的运行时情况。


原文链接:http://bbs.emindos.org/forum.php?mod=viewthread&tid=1157&extra=