
Androidのエミュレータの設定をいじっている最中、上図のエラーダイアローグを稀によく見かけていたような気がするのですがいままで原因がわからないうちになんか回避してしまっていたのでした。その原因と対応がなんとなくわかったのでメモ。
Androidのエミュレータの設定やデータは /Users/${username}/.android/avdディレクトリの中にそれぞれのエミュレータ専用の設定ファイル(.ini)と設定ファイルやデータをしまうためのディレクトリ(.avd)が用意されています。
avd$ pwd /Users/woshidan/.android/avd avd$ ls 5.1_WVGA_API_21.avd 5.1_WVGA_API_21.ini API15.avd API15.ini ...
個々のエミュレータ用の設定やデータが入っている.avdの中身は以下となっています。
API15.avd$ ls cache.img hardware-qemu.ini userdata.img config.ini sdcard.img emulator-user.ini userdata-qemu.img
件のエラーはこの中のデータなどが入っているファイルシステムである .imgファイルの形式がおかしいため起こるようです。これは、エミュレータの設定をいじってから再起動などをしていると起こることがあります。
エラーメッセージ中にあるe2fsckコマンドについてはこちらによると、
ext2/ext3/ext4ファイルシステムの整合性をチェックし、修復する。マウント中のファイルシステムに対してはこのコマンドを実行しないようにする(修復をかけるとファイルシステムが壊れる恐れがある)。
なので、このコマンドがうまく走ってくれたらファイル形式の問題は解決しそうです。
また、一部の .imgファイルは起動時に存在しなければ作り直されるので、中に入っているデータに未練がなければ消して作り直してみてもよさそうです。エミュだし。ということで、
- 手動で
e2fsckを各ファイルにかけてみる cache.img,userdata-qemu.imgを削除する- エミュレータを作り直す
などで解決しそうですというか、私は2つ目と3つ目で解決した後StackOverflowで一つ目の方法を見つけたのでした。
現場からは以上です。