woshidan's blog

そんなことよりコードにダイブ。

ERROR: resizing partition e2fsck failed with exit code 8

stackoverflow.com

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で一つ目の方法を見つけたのでした。

現場からは以上です。