Intel提供了一个叫HAXM的虚拟硬件加速技术,全称为:Intel Hardware Accelerated Execution Manager.
只要你的CPU是intel的产品并且支持VT(virtualization Technology)就可以使用HAXM技术将你的模拟器的速度提升至真机的水平。目前此技术支持苹果的Mac系统和Windows系统,但Linux平台不在此列。
要知道Android的编译环境Google首推Linux平台(64位的Ubuntu)而Mac系统排到第二位。那么在Linux平台下是如何硬件加速的呢?
那就是传说中的kvm(Kernel-based Virtual Machine),同样的,它需要硬件的支持,比如intel的VT和AMD的V,它是基于硬件的完全虚拟化。
首先要确定你的cpu满足要求,下面有几个命令可以参考:
<code class="hljs ruby has-numbering"><span class="hljs-variable">$ </span>egrep -c <span class="hljs-string">'(vmx|svm)'</span> /proc/cpuinfo <span class="hljs-number">4</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li></ul>
打印的值不为0即可。
下面安装kvm:
<code class="hljs lasso has-numbering">$ sudo apt<span class="hljs-attribute">-get</span> install qemu<span class="hljs-attribute">-kvm</span> $ sudo adduser linc kvm $ sudo apt<span class="hljs-attribute">-get</span> install libvirt<span class="hljs-attribute">-bin</span> ubuntu<span class="hljs-attribute">-vm</span><span class="hljs-attribute">-builder</span> bridge<span class="hljs-attribute">-utils</span> $ sudo adduser linc libvirtd</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul>
检验安装是否成功:
<code class="hljs asciidoc has-numbering">$ sudo virsh -c qemu:///system list <span class="hljs-header"> Id Name State ----------------------------------------------------</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul>
一切顺利,接下来要创建x86或x86_64的模拟器,其他模拟器不支持。如下图:
用命令行启动此模拟器:
<code class="hljs lasso has-numbering">$ /opt/sdk/tools/emulator <span class="hljs-attribute">-avd</span> Nexus5API21 <span class="hljs-attribute">-qemu</span> <span class="hljs-attribute">-m</span> <span class="hljs-number">2047</span> <span class="hljs-attribute">-enable</span><span class="hljs-attribute">-kvm</span> </code><ul style="" class="pre-numbering"><li>1</li><li>2</li></ul>
使用起来果然飞快,连打开网页的速度都令人惊奇。当然了,如果不用命令行启动,直接在Android Studio中启动x86_64架构的模拟器,速度也是很快,唯独arm架构的模拟器启动速度奇慢无比。话又说回来,既然有了比较不错的cpu,那么机器的其他配置一定差不了,这样的配置跑起模拟器来肯定要比原来强。
模拟器顺手了,下面就尽情享受开发的乐趣吧。
如果觉得用自带的模拟器不能够满足你的要求,那么可以使用第三方的模拟器Genymotion,网传开发者反应良好。