Android
模拟器或真机都会有一定大小的内部存储空间(不是指内存,指的是持久化存储空间),但这并不够,有时我们需要更大的存储空间。为了在模拟器上开发使用扩展存储空间的程序,需要在PC
上模拟一个SDCard
的虚拟文件,然后加载到模拟器中。sdcard
文件使用tools
目录下的mksdcard.exe
命令生成,假设要生成大小256M
的sdcard
文件,可以使用如下的命令:
mksdcard
-
l mycard 256M card
/
mycard.img
使用mksdcard
命令要注意如下六点:
1. mycard
命令可以使用三种尺寸:字节、K
和M
。如果只使用数字,表示字节。后面还可以跟K
,如262144K
,也表示256M
。
2. mycard
建立的虚拟文件最小为8M
,也就是说,模拟器只支持大于8M
的虚拟文件。
3. -l
命令行参数表示虚拟磁盘的卷标,可以没有该参数。
4.
虚拟文件的扩展名可以是任意的,如mycard.abc
。
5. mksdcard
命令不会自动建立不存在的目录,因此,在执行上面命令之前,要先在当前目录中建立一个card
目录。
6. mksdcard
命令是按实际大小生成的sdcard
虚拟文件。也就是说,生成256M
的虚拟文件的尺寸就是256M
,如果生成较大的虚拟文件,要看看自己的硬盘空间够不够哦!
在执行完上面的命令后,执行下面的命令启动android
模拟器:
emulator
-
avd avd1
-
sdcard card\mycard.img
如果在开发环境(Eclipse
)中,可以在Run Configuration
对话框中设置启动参数,如图1
所示。
![](https://i-blog.csdnimg.cn/blog_migrate/6646712e6e990c88e57f3168b015c06f.png)
图1
当然,也可以在Preferences
对话框中设置默认启动参数。如图2所示。这样在新建立的Android
工程中就自动加入了装载sdcard
虚拟文件的命令行参数。
![](https://i-blog.csdnimg.cn/blog_migrate/1b8f0a01f5bd3ceb4b3b4bbd7cf451a6.png)
图2
如果读者使用OPhone
虚拟机,设置的方法是完全一样的。然后在虚拟机中的Setting
里看看sdcard
,是否找到,如图2
所示。
![](https://i-blog.csdnimg.cn/blog_migrate/5e75f105643df243cdfd7ff6e79d5f65.png)
图3
那么如何查看
sdcard
虚拟设备中的内容呢?方法很多,最简单的就是使用
android eclipse
插件带的
DDMS
透视图。如图
4
所示。
![](https://i-blog.csdnimg.cn/blog_migrate/1191e0d159cf1a514e806f630b09acaf.png)
图4
右上角的几个按钮可以删除、添加文件。
如果不使用DDMS
插件,或不在eclipse
里工作,也可以使用其他工具来操作sdcard
虚拟设备。如在windows
下,可以使用mtools
,该软件可以从如下地址下载:
安装完后,用mtools
打开mycard.img
,就会看到相应的目录和文件。如图5
所示。![](https://i-blog.csdnimg.cn/blog_migrate/95d980241c2f6a8db1d8bfa31a9dfcb9.png)
国内最棒的Google Android技术社区(eoeandroid),欢迎访问!
《银河系列原创教程》发布
《Java Web开发速学宝典》出版,欢迎定购
![](https://i-blog.csdnimg.cn/blog_migrate/95d980241c2f6a8db1d8bfa31a9dfcb9.png)
图5
如果读者使用的是linux
,可以使用mount
命令来将sdcard
虚拟文件映射成linux
的目录。先使用下面的命令:
mount
-
o loop mycard.img
/
mnt
/
card
执行上面的命令后,将会输出如下的错误:
mount::you must specify the filesystem type
出现上面错误的原因是由于img
文件的开头包含了mbr
,以致于mount
命令无法识别,当然,如果跳过这个就可以了。我们可以执行下面的命令看看应该跳过多少个字节:
fdisk
-
ul mycard.img
输出的内容见图
6
。
![](https://i-blog.csdnimg.cn/blog_migrate/9691386cd357e8e764877bbfddfaa5a5.png)
图6
找到一个start
的值,本例是129
,然后找到Units
的值,是512
512 * 129 = 66048
Ok ,就用下面的命令:
Ok ,就用下面的命令:
mount
-
o loop,offset
=
66048
mycard.img
/
mnt
/
card
执行完上面的命令后,进入/mnt/card
目录,就会看到mycard.img
中的文件了。
如果想在android
虚拟机中访问sdcard
中的文件,首先要获得sdcard
的路径。代码如下:
java.io.File sdcardDir
=
android.os.Environment.getExternalStorageDirectory();
sdcard的目录一般为“/sdcard”。
国内最棒的Google Android技术社区(eoeandroid),欢迎访问!
《银河系列原创教程》发布
《Java Web开发速学宝典》出版,欢迎定购