Android 为什么使用 MTP 取代曾经的 U 盘模式

前言

不知道是否还有人记得,过去 Android 设备在连接电脑时,可以以 U 盘模式(USB Mass Storage)挂载到电脑上。这种模式操作文件十分高效、方便,但后来 Android 用 MTP 模式取代了它。本文将从系统发展的角度解读这个变化的原因。

背景

本文这实际是对我知乎回答的补充:为什么以前手机 USB 直接连接电脑就可以传输文件照片,而现在特别麻烦?。由于我的回答并没有达到我预期的关注度,所以我在博客中重新整理一遍以起到更大的传播作用。

知乎上该提问现存一些问题,回答这个提问的人并不了解 Android 等移动设备系统。更奇怪的是有人以为自己回答到了本质,并认为其他人的回答是不对的。实则自己的回答也是片面的(因为他对 Android 几乎没有了解)。

UMS 模式

早期的 Android(主要是还在普遍使用外部 SD 卡的时候),SD 卡是可以单独挂载出去的。

这里不是说你把 SD 卡拿出来,插进读卡器连接电脑。而是手机充当了读卡器的角色,连接手机时是可以选择把 SD 卡作为 USB 大容量存储设备挂载到电脑上的。这时候电脑是独占 SD 卡的,手机反而无法操作 SD 卡了:

过去的 Android 设备连接电脑传输文件

这种挂载就是 UMS(USB Mass Storage)模式,很多人也称之为 U 盘模式。在这个模式里,你甚至可以用电脑格式化 SD 卡,文件操作也非常的高效。但由于 Android 的后续发展,它有一些必须被取代的理由。

主要原因

随着 Android 以及手机的进化,它被取代其实是非常合理和容易理解的。由于一些原因(以及本文未列出的可能存在的更多因素),导致 UMS 模式几乎不再可用。我将在下文逐个讲解。

SD 卡被淘汰

后来的手机基本移除了对外部 SD 卡的支持。在这类设备中内部存储(虚拟 SD 卡)担任以前的 SD 卡的角色。这期间经历了多次存储管理的变迁历史,从 FUSE 到 SDCardFS,又到 FUSE2。最新的 /sdcard 是 /data 分区的一部分,不再独立。它只是一个文件夹,连分区都不是。也就是说原来的 UMS 模式是没法用的。

文件系统

再后来 Android 开始使用 EXT4、F2FS 这些更加先进的文件系统(包括 /data)。Windows 不仅无法支持这些文件系统,在挂载时还会提示用户格式化。一个误操作会导致设备的文件系统损坏,丢失全部数据。所以 UMS 模式即使存在,也无法成功挂载。尝试使用 Windows 这样的系统挂载,这种行为就是极为危险的。

加密支持

后来的手机普遍会加密数据分区。即使电脑支持 Android 设备所使用的文件系统,也无法解读里边的数据。UMS 模式挂载变得毫无意义。

SD 卡重要性

SD 卡(无论是外部独立还是内部虚拟)变得更加重要,承担了一部分 /data 的作用。例如 Scoped storage 机制,会在 SD 上分配 App 的隔离数据目录。如果再把 SD 卡的挂载让出去,很多应用程序将不可读写数据,功能发生异常。

MTP 模式

媒体传输协议(Media Transfer Protocol)是后来被 Android 采用的管理/传输文件的标准方法。大概在 2011 年,Android 3.0 时出现。

以 MTP 挂载模式管理文件,电脑系统就不必在意是否支持设备的文件系统,也不会有加密。内部存储对两边设备同时可见。并发操作、同时读写(会上锁)是安全的。所以以上问题都不再存在。但 MTP 并不是没有缺陷,实际上它的缺陷也很明显。

首先它要求电脑系统支持 MTP,如果支持不理想就会出现很多问题。至今的苹果电脑系统 macOS 是不支持 MTP 的,要安装专门的软件。其次 MTP 的效率不高,传输速度慢,文件操作算不上特别方便。但总体是能用的。

结束语

这就是我总结的 Android 用 MTP 取代 UMS 模式的一些理由了。实际上我认为随着手机和 Android 的进化,UMS 模式被淘汰几乎是必然的。即使没有 MTP,也会有类似的东西取代 UMS 模式。因为 UMS 模式阻碍了 Android 的发展,这种模式更适用于纯粹的存储设备而不是一台手机。

Copyright © 2022 世界杯进球_国足进世界杯了吗 - fulitb.com All Rights Reserved.