OPhone模擬器或真機都會有一定大小的內(nèi)部存儲空間(不是指內(nèi)存,指的是持久化存儲空間),但這并不夠,有時我們需要更大的存儲空間。為了在模擬器上開發(fā)使用擴展存儲空間的程序,需要在PC上模擬一個SDCard的虛擬文件,然后加載到模擬器中。
sdcard文件使用tools目錄下的mksdcard.exe命令生成,假設(shè)要生成大小256M的sdcard文件,可以使用如下的命令:
- mksdcard -l mycard 256M card/mycard.img
OPhone模擬器使用mksdcard命令要注意如下六點:
1. mycard命令可以使用三種尺寸:字節(jié)、K和M。如果只使用數(shù)字,表示字節(jié)。后面還可以跟K,如262144K,也表示256M。
2. mycard建立的虛擬文件最小為8M,也就是說,模擬器只支持大于8M的虛擬文件。
3. -l命令行參數(shù)表示虛擬磁盤的卷標,可以沒有該參數(shù)。
4. 虛擬文件的擴展名可以是任意的,如mycard.abc。
5. mksdcard命令不會自動建立不存在的目錄,因此,在執(zhí)行上面命令之前,要先在當前目錄中建立一個card目錄。
6. mksdcard命令是按實際大小生成的sdcard虛擬文件。也就是說,生成256M的虛擬文件的尺寸就是256M,如果生成較大的虛擬文件,要看看自己的硬盤空間夠不夠哦!
在執(zhí)行完上面的命令后,執(zhí)行下面的命令啟動OPhone模擬器:
- emulator -avd avd1 -sdcard card\mycard.img
如果在開發(fā)環(huán)境(Eclipse)中,可以在Run Configuration對話框中設(shè)置啟動參數(shù),如圖1所示。
當然,也可以在Preferences對話框中設(shè)置默認啟動參數(shù)。如圖2所示。這樣在新建立的Android工程中就自動加入了裝載sdcard虛擬文件的命令行參數(shù)。
如果讀者使用OPhone模擬器,設(shè)置的方法是完全一樣的。然后在虛擬機中的Setting里看看sdcard,是否找到,如圖2所示。
圖3
那么如何查看sdcard虛擬設(shè)備中的內(nèi)容呢?方法很多,最簡單的就是使用android eclipse插件帶的DDMS透視圖。如圖4所示。
右上角的幾個按鈕可以刪除、添加文件。
如果不使用DDMS插件,或不在eclipse里工作,也可以使用其他工具來操作sdcard虛擬設(shè)備。如在windows下,可以使用mtools,該軟件可以從如下地址下載:http://files.cnblogs.com/nokiaguy/winima81.rar
安裝完后,用mtools打開mycard.img,就會看到相應的目錄和文件。如圖5所示。

如果讀者使用的是linux,可以使用mount命令來將sdcard虛擬文件映射成linux的目錄。先使用下面的命令:
- mount -o loop mycard.img /mnt/card
執(zhí)行上面的命令后,將會輸出如下的錯誤:
- mount::you must specify the filesystem type
出現(xiàn)上面錯誤的原因是由于img文件的開頭包含了mbr,以致于mount命令無法識別,當然,如果跳過這個就可以了。我們可以執(zhí)行下面的命令看看應該跳過多少個字節(jié):
- fdisk -ul mycard.img
輸出的內(nèi)容見圖6。
找到一個start的值,本例是129,然后找到Units的值,是512
512 * 129 = 66048Ok,就用下面的命令:
- mount -o loop,offset=66048 mycard.img /mnt/card
執(zhí)行完上面的命令后,進入/mnt/card目錄,就會看到mycard.img中的文件了。
如果想在android虛擬機中訪問sdcard中的文件,首先要獲得sdcard的路徑。代碼如下:
- java.io.File sdcardDir = android.os.Environment.getExternalStorageDirectory();
sdcard的目錄一般為“/sdcard”。
【編輯推薦】
- 中移動發(fā)布OPhone SDK 基于Android技術(shù)
- Google推出新編程語言Simple 用于Android開發(fā)
- Android之父稱將瞄準企業(yè)用戶推新功能
- Android平臺將占據(jù)HTC明年50%產(chǎn)品
- 谷歌宣布開放Android移動操作系統(tǒng)源代碼