现状介绍
由于技术和成本的问题,早期Android系统一般配置有较小的内置存储,另外还提供存储卡的插槽作为主存储(外置存储)。 随着技术升级和内置存储成本的降低,大部分Android系统已经取消了存储卡的插槽,取而代之的是更大的内置存储。 但是很多程序已经习惯了使用外置存储,为了兼容老的程序和开发者的使用习惯,即使在没有存储卡插槽的手机上,我们也能看到/sdcard目录,主存储也是存在的。另外一方面Android也支持外接越来越多类型的设备来作为外置存储,所以Android需要对这些外置设备进行管理。 这就是vold 和MountService的基本作用:对外置存储进行管理。
Android有个主存储(Primary)的概念,主存储作为主要的外置存储,是提供给应用程序使用的,一般通过Context的几个获取外置存储路径的api,基本上返回的都是主存储的磁盘路径。主存储对于Android手机是必须的,除非要求所有应用都别使用读写外置存储的api,这显然是不现实的。那对于目前没有外置存储的手机是怎么做到这点的呢? Android引入了一个模拟存储的概念,就是用内置存储的空间内来模拟外置存储。不但可以使用外置存储来模拟内置存储,Android同样提供了使用外置存储来模拟内置存储的能力,这样既可以通过外接设备来扩展外置存储空间,还可以通过外接设备来