Develop with pleasure!

福岡でCloudとかBlockchainとか。

Linux上でAndroidの爆速エミュレータ環境を構築してみた。

【番外編】Androidの爆速エミュレータ環境を構築する | Developers.IO

のブログを見て、爆速エミュレータ on Linuxを試してみた。

Android SDK Managerで確認すると、Linuxの場合、残念ながら↓のように「Not compatible with Linux」となってて、HAXMがインストールできないようになってる。

なので、↓に従って環境構築してみた。

How to Start Intel Hardware-assisted Virtualization (hypervisor) on Linux to Speed-up Intel Android x86 Gingerbread Emulator | Intel® Developer Zone

KVMのインストール

エミュレータはhypervisorを使って爆速を実現してるみたいなので、まずhypervisorとしてKVMをインストールする。Ubuntu環境なのでKVM/Installation - Community Ubuntu Documentationを参考にしつつインストール。

まず↓のコマンドでプロセッサがサポートされてるかどうか確認する。この値が0だったらそのCPUはサポートされてない。

$ egrep -c '(vmx|svm)' /proc/cpuinfo
4

続いて、cpu-checkerをインストールしてKVMが利用可能か確認する。

$ sudo apt-get install cpu-checker
$ kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used

kvm-okの結果、どうやらKVMは利用可能なことが確認できる。BIOSの設定でVirtualization Technologyの設定がDisabledになってる場合もあるので、その場合はBIOSのVirtualization Technologyの設定をEnabledすれば良い。

続いてKVMのインストールのため↓のパッケージをインストール

$ sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils

続いて、kvm、libvirtdグループに自分のユーザを登録する。

$ sudo adduser ユーザアカウント kvm
$ sudo adduser ユーザアカウント libvirtd

グループへの登録が終わったら、一度ログインしなおす。
続いてインストールの検証。

$ sudo virsh -c qemu:///system list
 Id 名前               状態
----------------------------------

↑のコマンド叩いて↑の結果が表示されたらOKみたい。

エミュレータの起動

↑までで環境はできたのでエミュレータで起動してみる。まずはx86用のAVDを作成する。

$ android create avd -n android-4.0-x86 -t 1 --abi x86

 -nはAVD名なので好きな名称を、-tはターゲットIDを指定、--abiでx86を指定する。
※--abiを指定しなかった場合armになるので要注意。

あと、Android SDKのtools/libのパスをLD_LIBRARY_PATHに追加しとかないとlibOpenglRender.soが無いって怒られるので追加する。

$ export LD_LIBRARY_PATH=$ANDROID_SDK_HOME/tools/lib:$LD_LIBRARY_PATH

で、いよいよエミュレータを起動。-enable-kvmKVMを利用可能にする。

$ emulator-x86 -avd android-4.0-x86 -qemu -m 1024 -enable-kvm

無事、エミュレータが起動する。


でも、Android SDK ManagerでHAXMがNot compatibleになってるのは何でなんだろ?KVMのインストール状況とかに依存するから?