使用HAXM 与 KVM 给emulator加速


Android emulator 运行很慢,应该使用虚拟机加速, Windows 下 Android SDK Manager中可以安装 HAXM, 安装之后运行速度提升很多

Intel HAXM (Hardware Accelerated Execution Manager) 使用基于 Intel(R) Virtualization Technology (VT) 的硬件加速

参见: http://www.cnblogs.com/beginor/archive/2013/01/13/2858228.html


 HAXM 在 Ubuntu 下面对应的就是 KVM,  在运行 emulator 的时候的通过 -qemu -m 512 -enable-kvm,使得 emulator 运行在 kvm 之上,速度也得到很大提升

emulator -avd a -qemu -m 512 -enable-kvm


这两者的原理让 qemu 不再模拟 x86的 cpu了,而是把硬件指令都交给虚拟机,所以速度大增。

遗憾的是: KVM 只支持 intel, amd 的 cpu,而 HAXM可能只支持 Intel的


Ubuntu下 sdk 编译完成的 运行 emulator

下载 android 源码,lunch 中选择 x86-full, 再用 make -j8 sdk 可以编译得到 emulator , 可以直接运行

cd out/host/linux-x86/

bin/emulator

而后emulator 运行 out/target/product/generic_x86 下面的东西

这样你就不用创建 avd, 但是却不能修改 hardware-qemu.ini(创建 avd 是可以修改的),但可以加参数比如  emulator -gpu on


gpu 是否加速

使用 -gpu on 可以让把模拟器中  gles 指定转化的PC主机的 opengl 指令,而不是使用软3d( cpu 模拟 gpu ), 3d程序将变得很流畅。

但前提是你安装好的显卡的 opengl驱动


调用关系可能是,如果你安装了 Mesa, 在找不到合适的 driver 情况下, Mesa 使用 soft 3d, 就是说即使模拟器中 -gpu on 打开,Android 以为是使用硬3D,但PC主机自己却使用软3D, 速度慢

调用的层次关系是:

Your application
  ↓ (sends graphic requests defined by the "GLX extension to the X Protocol")
X Server with the GLX extension
  ↓ (convert your request to OpenGL commands)
OpenGL
  ↓ (redirects function calls to implementation defined by)
Mesa
  ↓ (forwards OpenGL commands)
DRI
  ↓ (converts OpenGL commands to GPU commands)
Graphic Card
  ↓
3D Images on your screen


在 Ubuntu 下安装 driver 是个麻烦事, Intel 的驱动不支持 Ubuntu12.04,只支持最新的 Ubuntu,  老的 ATI 比如 1300/1500, ATI只支持到 Ubuntu 9.04, 最后只好买个GT610 Nvidia显卡,driver 才装上,3D才生效。


如果更新 Kernel ,driver 又失效( driver 是根据旧的kernel header 编译的), 需要重新安装

sudo sh NVIDIA-Linux-x86_64-331.49.run 

这时候可能会出错

ERROR: The kernel header file '/lib/modules/3.2.0-24-generic/build/include/linux/kernel.h' does not exist

...

重新获取 kernel header 当运行

sudo apt-get install linux-headers-3.2.0-24

再重新安装 driver 

sudo sh NVIDIA-Linux-x86_64-331.49.run 

成功

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐