下图是ANDROID4.4 版本包含的所有系统服务、本地服务和应用的框架图,组织为三层:应用层、系统服务层、本地进程和服务层。应用层通常通过服务提供的对外API接口(一个服务管理对象)与服务交互,系统服务层通过JNI或者本地SOCKET与本地进程实现交互。
几乎所有的系统服务层的服务(除了SenSorService)都是使用JAVA语言实现的,这些服务工作于同一个SystemServer进程,因此称为系统服务。系统服务层的服务有些是系统内部使用的,没有对应用层提供对外的API接口,这些服务在图中用白色方框表示,包括电池服务BatteryService、传感器服务SenSorService、MountService、LockSettingsService、NetworkManagerService、NetworkStatsService、DeviceStorageMonitorService、EntropyMixer、ContentService、DiskStatsService、SamplingProfilerService、CommonTimeManagementService、DreamManagerService、AssetAtlasService。
该层的其它服务都对外提供一个管理对象供应用使用。
本地进程和服务采用C++语言实现,除了包括实现特殊功能的zygote进程(孵化进程,负责子进程的生成)和servicemanager进程(也称为0号服务,所有其它服务必须在该进程中注册才能被其它进程使用)外,还包括负责媒体功能的media 进程(该进程包括AudioFlinger、MediaPlayerService、CameraService、AudioPolicyService四个媒体相关的服务),负责图形绘制的surfaceflinger进程,以及keystore(密钥管理进程)、installd(包安装进程)、ueventd(LINUX内核通讯进程)、healthd(电池健康管理进程)、vold(存储卷的守护进程)、netd(网络守护进程,负责底层网络功能)、rild(电话raido
接口层守护进程,负责与底层radio的交互)、drm(数字版权管理进程)等。
因此可以说ANDROID系统就是各种服务的集合,通过服务之间的交互和配合共同实现了系统的所有功能。
如果掌握了每个服务的架构和工作机理,也就能够深刻理解和掌握整个ANDROID操作系统,这也是本博客ANDROID框架解析系列文章要达到的目的。