海思Hi3751 android诞生之初主要面向手机业务,而手机上的主要存储介质一般为 SD,TF 卡,存储设备没有分区,所以 Android 自身的存储管理原本设计成只针对单分区存储方案,对于多分区的U 盘,硬盘等,业务上只能访问第一个分区。而在我们的 DPT Android 平台上,由于支持 SD 卡、SB 等接口,使得存储方案变得丰富多样,目前 Android 的原生存储方案不能满足应用需求,需要升级以支持多设备,多分区。同时,由于谷歌和厂商对内置SD 卡和外置 SD 卡的不同要求,我们需要支持 2 种 SD 卡的方案。
1.2 存储模块概述
存储的模块结构分层非常清晰,主要有 4 层,如图 1-1 所示

应用层
主要是客户的应用程序(apk),在 UI 上显示当前 SD 卡或 U 盘状态。
Framework 层
StorageManager:它为存储的 Client 端,MountService 是 Server,他们通过 AIDL 进行进程间通信。StorageManager 是接口系统的存储服务,存储管理器处理与存储相关的项目,如 OBBs。
MountService:MountService 通过 NativEDAemonConnector 向 Vold 发送命令、请求服务,通过 INativeDaemonConnectorcallbacks 接收 Vold 的执行结果。
Vold
守护进程,主要监听 kernel 和 MountService 发送的请求,一方面负责接受内核发送的关于外部存储设备加载和删除的消息,另一方面负责执行由 MountService 通过
DirectVolume 和 PartVolume 表示每一个分区信息,前者是为了兼容原生的实现,其中维护了挂载分区的信息,对外提供分区的挂载、卸载、格式化等功能;
DirVolume 用于处理多分区的情况,当识别到新的分区时,创建对应的PartVolume 进行处理;VolumeManager 是核心模块,维护管理设备信息,对上提供功能,实现 Vold 的功能
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69958773/viewspace-2672199/ ,如需转载,请注明出处,否则将追究法律责任。