前言: 由于谷歌AndroidContainers 中将Vold中的某些模块和代码进行了重写,通过mojom借道chromiumOS间接和内核进行通讯和操作,所以我们需要研究原生安卓中的vold的流程以作参考。为我们分析和实现AC中的vold理清思路。
Vold是Volume Daemon的缩写,它是Android平台中外部存储系统的管控中心,是管理和控制Android平台外部存储设备的后台进程。其功能主要包括:SD卡的插拔事件检测、SD卡挂载、卸载、格式化等。
模块架构:
(此框架基于Android7.0 在9.0中与上层的通信方式有更改)
- Kernel:通过uevent向Vold的NetlinkManager发送Uevent事件;
- NetlinkManager:接收来自Kernel的Uevent事件,再转发给VolumeManager;
- VolumeManager:接收来自NetlinkManager的事件,再转发给CommandListener进行处理;
- CommandListener:接收来自VolumeManager的事件