タイトルそのままなんだけど、私の環境で発生して解決できたようなのでメモ。
AVDを使わずに、フルソースをビルドして出来上がった各種イメージファイル(out/target/product/generic/system.imgなど)を使ってエミュレータを起動した場合(emulatorのパラメータで-system/-ramdisk/-kernelなどを付けたとき)、-sdcardでSDイメージファイルをちゃんと指定していてもエミュレータがSDイメージを認識せずに「SDが刺さっていない」ことになってしまうことがあるようだ。
mksdcardでイメージを作り直したりしても同じで、しばらくハマっていたところで本家フォーラムで回避策を発見。
Cupcake Emulator do not mount SD card image – Android Developers | Google グループ
実際のバグトラッキングページはこちら↓。
どうもソースをmakeしたときに、out/target/product/generic/system/etc/ の下にvold.confというファイルが作成されないかららしい。
ちなみにvold.confの中身はというと、
## vold configuration file for the emulator/SDK
volume_sdcard {
## This is the direct uevent device path to the SD slot on the device
emu_media_path /devices/platform/goldfish_mmc.0/mmc_host/mmc0
media_type mmc
mount_point /sdcard
ums_path /devices/platform/usb_mass_storage/lun0
}
と、SDのマウントの設定が書かれている。これが無いとそもそもエミュレータがSDを認識しないようになってる模様。
さてvold.confが正しく生成されるために、ここにある差分をマージする。
diff --git a/core/main.mk b/core/main.mk
--- a/core/main.mk
+++ b/core/main.mk
@@ -209,6 +209,14 @@ ifeq (,$(filter %:system/etc/apns-conf.xml, $(PRODUCT_COPY_FILES)))
$(warning implicitly installing apns-conf_sdk.xml)
endif
endif
+# Install a vold.conf file is one's not already being installed.
+ifeq (,$(filter %:system/etc/vold.conf, $(PRODUCT_COPY_FILES)))
+ PRODUCT_COPY_FILES += \
+ development/data/etc/vold.conf:system/etc/vold.conf
+ ifeq ($(filter eng tests,$(TARGET_BUILD_VARIANT)),)
+ $(warning implicitly installing vold.conf)
+ endif
+endif
# If we're on an eng or tests build, but not on the sdk, and we have
# a better one, use that instead.
ifneq ($(filter eng tests,$(TARGET_BUILD_VARIANT)),)
パッチ適用後もう一度makeすると、vold.confが生成される。またsystem.imgも更新されるようだ。
これでエミュレータを起動すると、今度はきちんとSDが認識されるようになる。
…これで半日くらい潰した…。
関連する記事:
- Androidで自作アプリをプリインストール状態にする 自分でシステムイメージを作ってデバイスに焼いたり、エミュレータで使いたい人以外にはニーズないし、本当に正しいやり方かどうかも分からないけど、とりあえずメモ。 1. mydroid/packages/app 以下にアプリのソース一式を置き、Android.mkを作る。 実際は、mydroid/packages/app 以下でなくても mydroid/external の下でもどこでも良いはず。むしろ......
- Androidのx86向けでビルドエラー ここのところAndroidづいてるな...。 今日はx86用のビルドに挑戦。 第1回 話題の携帯向けOS「Android」をx86パソコンで動かしてみよう:ITproを参考にしてみたのだけど、エラーが出てビルドが通らない。 Copy: out/target/product/eee_701/installer/root/system/bin/netcfg Copying installer base......
- CSVをPerlで処理したいのだけど… ものすごく初歩的なところでハマっているのかもしてないけど、とりあえず書いておく。 1,1,1,1,1,1,1 2,2,2,2,2,2,2 3,3,3,3,3,3,3 というようなCSVファイルがあって、これをPerlで読み込みたいとき open (FILE,"test.csv); my @data =...
- gentoo + apache2 + ssl でちょっとハマる /etc/conf.d/apache2 で APACHE2_OPTS = "-D SSL -D SSL_DEFAULT_VHOST" と、"SSL_DEFAULT_VHOST"を追加で指定しないとSSLでアクセスできないのね。"-D SSL"が指定してあるのになんでダメなんだろう…と一時間半くらい悩んだ。...
- pdnsdでDNSキャッシュ うちのネットワーク環境は、DNSに難がある。 ADSLルータにDNSキャッシュ機能があるけど、1ヶ月くらいルータを起動していると固まる プロバイダ提供のDNSは回線の混雑具合で問い合わせに時間かかる時がある 今までは、自宅のサーバにdnbdnsの流れをくむdnscacheをインストールしていたのだけど、 これはこれで長期間起動していると応答がなくなるようだ 設定が非常に独特でややこしい。/serv......
- Ubuntuのapacheで個人ディレクトリのpublic_html以下を使う たいしたネタでは無いけど、メモ。 apacheをインストールしただけだと、/var/www/ 以下がDocument Rootになるのだけど、ここはsudoしないとファイルを置くことができない。 ユーザーのホームディレクトリのpublic_htmlを対象に含めたいときは、UserDirモジュールを使うように設定する必要がある。 設定ファイルは、 /etc/apache2/mods-availabl......
- 新しい: WWDC
- 古い: Android解析進まず
コメント:0
トラックバック:0
- この記事のトラックバック URL
- http://www.swingingblue.net/mt/archives/002529.html/trackback
- トラックバックの送信元リスト
- AndroidのフルソースからビルドしたエミュレータでSDを認識しない場合 - きままな日記帳 より
