在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