一、Android 系统结构
操作系统,直接和硬件交互,包含所有硬件驱动。负责进程管理、内存管理、安全性、网络协议栈等。Linux内核也同时作为硬件和软件栈之间的抽象层。
本层包含一些C/C++函数库,供上层使用:
- libc(系统C函数库):专门为嵌入式Linux设备定制的。
- 媒体库:音视频录制和播放,图片的拍摄和展示。
- Surface Manager :显示管理,界面渲染相关。
- WebKit :web浏览器相关
- SGL :底层的2D图形引擎
- OpenGL|ES :3D图形相关
- FreeTpye :位图和矢量字体显示
- SQLite :轻量数据库
Java语言的核心函数库,供上层使用。
谷歌优化了Java虚拟机。每个程序都拥有一个虚拟机实例。
为应用层的开发者提供API,实际上是一个应用程序的框架。
包括系统自带的应用和后安装的应用。
二、Framework 详情
- SystemServer 是 Framework 中非常重要的一个进程,它是在虚拟机启动后运行的第一个 Java 进程。SystemServer 启动各个系统服务,这些系统服务都是以一个线程的方式存在于 SystemServer 进程中。
① ActivityManagerService 最核心的服务之一,管理 Activity。
② WindowManagerService 最核心的服务之一,负责窗口管理。
③ PackageMangerService 程序包管理服务。
④ LocationManagerService 位置管理服务。
⑤ NotificationMangerService 通知栏管理服务。
⑥ StatusBarManagerService 状态栏管理服务。
⑦ LightsService 光强度感应器服务。
⑧ AccountManagerService 账号管理服务。
⑨ ContentService ContentProvider 跨进程数据交换。
⑩ EntropyService 提供伪随机数。
⑪ TelephonyRegistry 通过该模块注册电话模块的事件响应,比如重启、关闭、启动等。
⑫ BatteryService 电池管理服务。
⑬ PowerManagerService 电源管理服务。
⑭ VibratorService 震动器服务。
⑮ AlarmManagerService 定时器管理服务,提供定时提醒服务。
⑯ BluetoothService 蓝牙服务。
⑰ DevicePolicyMangerService 提供一些系统级别的设置和属性。
⑱ ClipBoardService 系统剪切板服务。
⑲ InputMethodManagerService 输入法管理服务。
⑳ NetStatService 网络状态服务。
㉑ NetworkManagmentService 网络管理服务。
㉒ ConnectivityService 网络连接管理服务。
㉓ Accessibility 辅助管理程序截获所有的用户输入,并根据这些输入给用户一些额外的反馈,起到辅助的效果。
㉔ MountService 挂载服务,可通过该服务调用 Linux 层面的 mount 程序。
㉕ DeviceStorageManagerService 磁盘空间状态检测服务。
㉖ SearchMangerService 搜素管理服务。
㉗ DropBoxMangerService 通过该服务访问 Linux 层面的 DropBox 程序。
㉘ WallpaperManagerService 墙纸管理服务,不同于桌面壁纸,在 View 系统内部,墙纸可以作为任何窗口的背景。
㉙ AudioService 音频管理服务。
㉚ BackupManagerService 系统备份服务。
㉛ AppWidgetService 系统桌面小控件服务。
㉜ RecognitionManagerService 身份识别服务。
㉝ DiskStatsService 磁盘统计服务。
除此之外还有 NFC、Download 等服务。
三、核心服务简介
应用进程的管理服务端,主要工作是对应用进程及其进程中的四大组件进行管理,保证了系统不同的应用程序之间能够和谐的合理的进行调度运行。(也涉及了一些 Window 、电源、权限等内容)
对进程的管理:进程的创建、销毁、进程的优先级调整。
对组件的管理:Activity 的调度管理、Service的管理、Broadcast的分发、ContentProvider的管理。
对系统中所有窗口进行管理、动画处理、Input 分发处理、display 管理。
负责 Package 的管理,应用程序的安装、卸载、信息查询。