woshidan's blog

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

emulator: ERROR: This AVD's configuration is missing a kernel file!

エミュレータネタ連発。上記エラーが発生した時に確認することを順にメモ。

エラーメッセージ全体

Cannot launch AVD in emulator.
Output:
emulator: ERROR: This AVD's configuration is missing a kernel file! Please ensure the file "kernal-qemu" is in the same location as your system image.
emulator: ERROR: ANDROID_SDK_ROOT is defined (/Users/woshidan/Library/Android/sdk) but cannot find kernel file in (/Users/woshidan/Library/Android/sdk/system-images/) sub directories

発生したエミュレータAPIバージョンとABIとどこ製か

一部のエミュ(主にARM系)のエミュにはGoogle社製のものとAndroid Open Source Projectによるものがあって、自分の手元で発生したのは

で発生。

kernal-qemuとは

QEMUとは - OSS用語 Weblio辞書

QEMU(仮想マシンエミュレータ)のハード的なところとソフト的なところをつないでくれるソフト。カーネル。 どうも、Androidエミュレータは、QEMUを利用してARM系のエミュをx86などのCPUのPC上で動かしているそうです。

今回のエラーはエミュレータ作成の時に指定したターゲットに対して、このファイルがないと言われています。

実はでもなく、システムイメージが何かよくわかってないので用語や文末がふわふわですが、エミュレータに指定できるターゲットに相当するディレクトリがありまして、そのディレクトリの中に kernal-qemu がないと言われていることになります。

発生した場合に確認すること

  • SDK Manager上で該当システムイメージがインストールされているか
  • システムイメージが入っているディレクトリを開いてみて kernal-qemuがあるか
    • ディレクトリのパスの例
      • Google社製 /Users/woshidan/Library/Android/sdk/add-ons/addon-google_apis-google-16-1/images/armeabi-v7a
      • Android Open Source Project製 /Users/woshidan/Library/Android/sdk/system-images/android-15/google_apis/x86

実際に当該ディレクトリを覗いてみた例

// エラーが出ない
$ ls /Users/woshidan/Library/Android/sdk/system-images/android-15/google_apis/x86
NOTICE.txt      kernel-ranchu       source.properties
build.prop      package.xml     system.img
kernel-qemu     ramdisk.img     userdata.img
// エラーが出る
$ ls /Users/woshidan/Library/Android/sdk/add-ons/addon-google_apis-google-16-1/images/armeabi-v7a
NOTICE.txt  build.prop  ramdisk.img system.img  userdata.img

どうするか

本来はないと言われているkernel-qemuを調達できればいいのですが、いまのところ、Linuxよくわかってないし、方法不明*1。 もしかすると、SDK Managerをアップデートした後、システムイメージをアンインストールして再インストールすると直るかもしれないですが、最新バージョンのシステムイメージが欲しい場合などを除き、Android Open Source Projectの方のディレクトリには kernel-qemu が含まれていたため、未検証です。

また、自分がこの不具合に遭遇したARM系というのはたいていの実機が該当するので、実機で検証するか実機が欲しいと交渉した方が早いかもしれません。

現場からは以上です。

*1:誰かわかったら教えてください