从android2.2(froyo) , Android 改写了vold code. 将code从c语言,变为了C++,并且充分继承了framework,NetlinkListener等通用类,虽然较大了提交的vold的结构性,可继承性和扩展性,但同时也增加了代码的复杂度。
介绍一篇很不错的文档 ANDROID中的VOLD分析
但这篇文章更加侧重在结构上,实用性有所欠缺,有些高雅,而缺乏简单
本文首先详细介绍各个文件和类的主要作用,然后再详细的介绍vold的操作流程,希望有所帮助。如有任何问题,可以直接留言提问.
1, 各个文件与类的主要作用:
main.cpp : 看到main()函数,一切都不用了。重要提一点,vold换了一个新的 配置文件。换到了/etc/vold.fstab。你的vold没有正常工作,第一件事情先去check一下配置没有有没有改。
volume.h/cpp ,volume 类:一个非常重要的类,但是没有直接的实例,提供了sd卡的主要操作功能,包括mount,unmout,format,另一个重要结构android::List<Volume *> VolumeCollection; 在下一小部分解释
DirectVolume.h/cpp,DirectVolu