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的
下载 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 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
成功