OS X で Android emulator に SDカード を装着させる (あるいは adb pushで Read-only file system)

 

Step1. Android エミュレータ向けのSDカードを作成

ちなみに場所は、好きなとこでどこでもいい。

$ mksdcard 2048M           /mydir/mysdcard.iso
$ mksdcard [ファイルサイズ]  [ファイルパス]

 

Step2.

Android emulator 起動する際には、作成したイメージファイル mysdcard.iso が Android emulator の /mnt/sdcard と対応づけられるような設定をします。
 

Step2-1.
Eclipse menu > [Run] > [Run Configuration]
f:id:domodomodomo:20120418235542p:plain
 

Step2-2.
開発している Android Project > [Target] Tab
 

Step2-3.
[Additional Emulator Command Line Options Eclipse] に次を指定します。

-sdcard  /mydir/mysdcard.iso

 

f:id:domodomodomo:20120418235836p:plain
 

これで /mydir/mysdcard.iso が SDカードとして emulator に認識されます。
 

Step3.

Android の emulator 配下の /mnt/sdcard を書き込み可能に変更
 

$ # エミュレータのシェルにはいる。
$ adb shell
#
#   # 先頭が # のときは、 Android emulator のシェル にいることを表します。
#   # わかりづらくてすいません...。
#   # /mnt/sdcard SDカードを書き込み可能に変更する。
#
# mount -o remount rw /mnt/sdcard
#
#   # Ctrl+Dで抜けて元のシェルに戻る。
# ^D
$
$

Android Emulator sdcard push error Read-only file system|stack over flow

 

Step4.

Android の emulator 配下の/mnt/sdcard を書き込む。

$ adb push img2.jpeg        /mnt/sdcard
$ adb push [送りたいファイル] [送りたい Android emulator 配下のフォルダ]

# 3 の処理をしていないと...
# エミュレータ配下で認識されている /mnt/sdcard が read only のため
# はじかれる
failed to copy 'img2.jpeg' to 'mysdcard.iso': Read-only file system


これで解決(`・ω・´)