天天看點

在Android(OPhone)模拟器中加載和使用SDCard卡

 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所示。

圖1

    當然,也可以在Preferences對話框中設定預設啟動參數。如圖2所示。這樣在建立立的Android工程中就自動加入了裝載sdcard虛拟檔案的指令行參數。

圖2

    如果讀者使用OPhone虛拟機,設定的方法是完全一樣的。然後在虛拟機中的Setting裡看看sdcard,是否找到,如圖2所示。

圖3

    那麼如何檢視sdcard虛拟裝置中的内容呢?方法很多,最簡單的就是使用android eclipse插件帶的DDMS透視圖。如圖4所示。

圖4

右上角的幾個按鈕可以删除、添加檔案。

    如果不使用DDMS插件,或不在eclipse裡工作,也可以使用其他工具來操作sdcard虛拟裝置。如在windows下,可以使用mtools,該軟體可以從如下位址下載下傳:

<a href="http://files.cnblogs.com/nokiaguy/winima81.rar">http://files.cnblogs.com/nokiaguy/winima81.rar</a>

    安裝完後,用mtools打開mycard.img,就會看到相應的目錄和檔案。如圖5所示。

圖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。

圖6

找到一個start的值,本例是129,然後找到Units的值,是512

512 * 129 = 66048

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”。

 本文轉自 androidguy 51CTO部落格,原文連結:http://blog.51cto.com/androidguy/214360,如需轉載請自行聯系原作者

繼續閱讀