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(仮想マシンエミュレータ)のハード的なところとソフト的なところをつないでくれるソフト。カーネル。 どうも、Androidのエミュレータは、QEMUを利用してARM系のエミュをx86などのCPUのPC上で動かしているそうです。
今回のエラーはエミュレータ作成の時に指定したターゲットに対して、このファイルがないと言われています。
実はでもなく、システムイメージが何かよくわかってないので用語や文末がふわふわですが、エミュレータに指定できるターゲットに相当するディレクトリがありまして、そのディレクトリの中に kernal-qemu
がないと言われていることになります。
発生した場合に確認すること
- SDK Manager上で該当システムイメージがインストールされているか
- 一度エミュレータを作成した後にシステムイメージが壊れていたり、Android StudioのAndroid SDKのパスの設定がおかしくて認識されてなかったりするかも?
- システムイメージが入っているディレクトリを開いてみて
kernal-qemu
があるか
実際に当該ディレクトリを覗いてみた例
// エラーが出ない $ 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:誰かわかったら教えてください