打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Android外部存储设备自动挂载的讨论

Android外部存储设备自动挂载的讨论

上一篇文章里,说是讲ntfs-3g向Android的移植,但是却顺带引入了另一个关联比较紧密的问题:如何自动挂载U盘、移动硬盘等大容量外部存储设备。hi.baidu.com/xiaowp
在Android中,原本就有一个很好用的自动挂载外存储设备的模块:vold,但是默认情况下vold所支持的只是对指定好的一个设备,自动将它挂载到指定的目录上的功能。即通过配置/etc/vold.fstab文件来实现此功能。
如果想在Android上实现自动根据设备名称来挂载到自动创建的目录中,则要自己动手来作一些工作。在本文中,我只会讨论实现自动挂载的方案,而不会研究其具体的代码实现。欢迎同道中人也来讨论相关实现方案。

我能想到的主要有下面几种方案:hi.baidu.com/xiaowp
    1.修改Android中的vold源代码。使其支持自动挂载外设。
    2.凭借对Linux的sysfs的认识,可以不依赖vold,自己实现一个自动挂载的程序。
    3.移植桌面Linux系统中的udev到Android上来。

对于方案1.由于不用创建“全新”的项目,而且是直接在其原有的框架基础之上添加新的功能,实现起来相关容易一些。但是实现完成后,如果没有写好,可能会发现自己的实现会让vold代码变得很丑陋。
方案2.是一个通吃的方案,只要是Linux就没问题(嗯……得是2.6以后的内核吧),不用担心以后再搞个其它系统,像Meego(现在被英特尔过继给别人了,起个新名字叫什么来着忘了。)hi.baidu.com/xiaowp
方案3.也算是个通吃的方案吧,这个只是我觉得可行的方案,并未经过实际验证。

方案1的实现:要实现这个,得先搞明白vold的代码。vold的基本工作流程,在网上已经有很多的介绍了。这里就只简单再梳理一下它的运行过程:
    1. 进入main.cpp里的main函数,对,就是这个样子的。。。在这里读取/etc/vold.fstab配置文件。把文件里的配置信息,解析出来后,根据配置信息创建对应的对象,一直留在内存里。
    2. 启动对uevent的监听。来事件后,由VolumeManager来处理、分发给相应的处理对象。
    3. 收到函数调用的对象,就根据uevent信息,来处理自己认为是正确的事儿。
针对自动挂载外设,也对应的有以下几条:
    1. 添加自动挂载的功能,可以在兼容原有配置和功能的前提下,再增加一个配置文件,比如/etc/auto.fstab;或者直接在/etc/vold.fstab文件里增加其它自定义类型的配置信息。
    2. 嗯……VolumeManager收到事件后,还是分发给“手下的人”去干活。“手下的人”可以多几个没关系,也可以自己多干点儿活。
    3. 收到函数调用的对象,则根据uevent是disk还是partition,文件系统在disk还是partition。来分别处理不同情况的挂载。
最后,vold模块还有一个很好用的程序就是vdc命令,可以用来在命令行执行外设操作的命令。比如最简单的:
vdc volume list
可以列举出当前外设,及其挂载情况。hi.baidu.com/xiaowp

方案2的实现:这个方案看起来好难啊,但是要真的了解sysfs,并且着手去做这个事情的话,发现其实也就是那么一回事儿。甚至可以把一部分vold的代码“借鉴”过来直接用。然后以一个服务来专门处理自动挂载未知的外部存储设备。
    这里也是可以在/etc目录下规定个配置文件,来只处理某个类型的外设事件。由于与vold进程“各自为政”,这里要注意同一个事件重复处理的情况(也许这种情况根本就不会发生)。

方案3的实现:当然这个方案不一定要把全部的udev功能都移植过来,只移植一部分应该就够用了,全移植了可能会画蛇添足了喔。又是移植,由于笔者心有余而力不足,本文就不介绍这个了。hi.baidu.com/xiaowp

另:
另外一个要考虑的,就是写代码时,要把自动挂载模块和前文说的ntfs-3g文件系统结合起来,以便实现“即插即用”。
最后,外设可以自动挂载了,另一个棘手的问题又来了:外设异常断开后,如何妥善“安抚”使用外设的程序?

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
Android2.2移植----之SD卡
SD Card/存储管理(刘举奎)
三、Storage框架整理
vold/mountservice框架【转载】
一篇读懂:Android手机如何通过USB接口与外设通信(附原理分析及方案选型)
手机内置SD卡和外置SD卡调换教程 扩大内存
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服