在Andorid开发中经常遇到与SD卡有关的调试,比如MP3文件、图片文件等。在使用模拟器开发时,可以通过硬盘来模拟SD卡。具体做法是:
(1)创建一个SD卡镜像文件:打开cmd,进入到SDK目录TOOLS目录下,输入如下命令:mksdcard
64M sdcard.img。该命令会在当前目录下生成一个sdcard.img文件,该文件就是Android模拟器的SD卡镜像文件。
(2)启动带sdcard的Android模拟器。在CMD中输入:emulator
–avd sdk_1_5_version –sdcard sdcard.img。该指令启动一个带SD卡的并以特定AVD为平台的模拟器。这样会看到tools目录下就会动态的产生一个sdcard.img.lock的文件夹,当关闭模拟器时又会消失。注意:不要关闭这个Dos窗口,不然连模拟器也会关掉,后面一步也不能执行。
(3)添加文件到SD卡。在cmd中,命令如下:adb
push test.mp3 sdcard/test.mp3,可把当前目录下存在的文件拷贝到SD卡中。过程会显示耗时和文件大小及速度。
(4)查看SD卡中的拷贝文件有多个方法。其一是直接在模拟器中点击MENU的音乐播放可看到考入的歌曲,或者DEVTOOLS->MEIDA
SCANNER检测SD卡的识别。另一种方法是点击 ECLIPSE的WINDOWS的DDMS视图,里面有FILE EXPLORER,点击SD CARD就可以看见里面的内容,同时在该界面下也可以移入和移出文件。在该种情况下偶尔会碰到SDCARD的访问权限不够,不过仍然可以通过CMD命令方式访问到。
(6)以上是在DOS模式下启动带SD的模拟器,如果是要从ECLIPSE中启动带SD的模拟器,需要在各个工程的运行配置中添加一个命令行。比如:RUN
CONFIGUATIONS->TARGET-> Aditional Emulator Command Line Options下面添加启动参数:-sdcard
E:/ToolBackUp/JAVA/android-sdk-windows-1.5_r3/tools/sdcard.img。那么再运行后就是带SD的模拟器。
==============================================================================================================
关于android系统开发sdcard的加载移植,主要有如下工作:
(1)内核驱动开发,完成后每次插入和拔出sdcard系统都会有相关的信息显示,而且sdcard可以手动挂载。
(2)android的sdcard挂载主要是vold来完成,vold的源代码在alps\system\vold\目录下,编译成alps\out\target\product\$ProjectName\system\bin\vold。在init.rc文件中有vold系统服务,确保android系统开机后vold有正常运行。
(3)添加vold的配置文件,先查看alps\system\vold\main.cpp文件中的process_config函数,发现配置文件路径如下:
/etc/vold.fstab,这是一个生成文件,原始的文件在alps\mediatek\config\$ProjectName\vold.fstab。
(4)修改vold.fstab的内容。写法如下,实际各个定义的含义请参考文件上端的说明:
dev_mount <label> <mount_point> <part> <sysfs_path1...>
dev_mount命令 标签 挂载点 子分区 设备在sysfs文件系统下的路径(可多个)
按照上面的要求和我的平台的实际情况,在vold.fstab中添加如下内容:
dev_mount sdcard /mnt/sdcard auto /devices/platform/goldfish_mmc.0 /devices/platform/mtk-sd.1/mmc_host/mmc0
(5)完成后发现android系统中sdcard可用了,总结一下sdcard部分很简单,主要是找到sdcard设备对应的sysfs文件系统路径。
参考原文:http://blog.csdn.net/jiajie961/article/details/6035369