使Android模拟器运行得更快

Android模拟器有点迟钝。对于摩托罗拉Droid和Nexus One等设备,应用程序在实际设备上的运行速度比模拟器快。在测试游戏和视觉效果时,这是一个问题。

如何使模拟器尽可能快地运行?我一直在摆弄它的参数,但还没有发现一个配置显示出明显的改进。

218954 次浏览

我认为这是因为clr虚拟机直接使用cpu而不需要代码操作码转换。 它可能是clr应用程序的优化,也可能是在英特尔处理器上启动的windows mobile/window phone 7。 基于linux的Android平台,理论上可以在i686环境下的虚拟机上启动Android。在这种情况下,像vmware这样的虚拟机可以直接执行一些操作码。但只有在Java上编写时才允许此选项。因为Java会在执行前解释字节码或预编译它。 看到的: http://www.taranfx.com/how-to-run-google-android-in-virtualbox-vmware-on-netbooks < / p >

我最近从core 2 @ 2.5, 3gb内存换成了i7 @ 1.73, 8gb内存(两个系统都运行Ubuntu 10.10),现在模拟器的运行速度至少快了一倍。投入更多硬件当然会有所帮助。

我注意到模拟器只默认为核心0,而大多数Windows应用程序将默认为“任何”核心。此外,如果你把它放在另一个核心上(比如上一个核心),它可能会让模拟器发疯。如果可以,可以尝试将CPU使用率高的应用程序放在其他CPU内核上,以提高速度。

硬件方面,获得最快的CPU,可以为单核应用程序工作。在模拟器性能方面,超过2个内核可能不会有太大的差异。

Eclipse + Android模拟器一起消耗了大量的RAM。我建议至少使用3g RAM,因为我使用的是一个有2g RAM的系统,它变慢了,因为系统用完了RAM,开始使用页面文件。

我觉得最好的cpu可能会有一个高时钟(只使用时钟作为同一系列cpu的衡量标准),处理非simd操作很好,并有一个涡轮增压机制。没有很多基于java的基准测试,但总体上寻找像压缩和office这样的应用程序基准测试。不要关注游戏或媒体,因为它们深受SIMD的影响。如果你能找到一个Java版本,那就更好了。

更新:现在Intel x86映像已经可用,最好的答案是上面的zest。

正如CommonsWare正确指出的那样,这个模拟器很慢,因为它模拟的是ARM CPU,而ARM CPU需要转换成Intel操作码。这种虚拟化占用CPU资源。

为了让模拟器更快,你必须给它更多的CPU。从快速CPU开始,如果可以的话升级。

然后,给模拟器更多的CPU:

  1. 禁用超线程 -由于模拟器似乎没有使用多个核心,超线程实际上减少了模拟器将获得的总体CPU时间。禁用HT会降低应用程序使用多个cpu的速度。超线程必须在BIOS中禁用。
  2. 让模拟器在CPU 0以外的CPU上运行 -这比关闭HT的影响要小得多,但它有一些帮助。在Windows上,您可以指定进程运行在哪个CPU上。许多应用程序会占用CPU 0,默认情况下模拟器运行在CPU 0上。我将模拟器更改为运行最后一个。注意,在OS X上你不能设置亲和性(参见:https://superuser.com/questions/149312/how-to-set-processor-affinity-on-a-mac)。

我看到大约有50%的改善与这两个变化到位。

在Windows 7上设置处理器亲和性:

  1. 打开任务管理器
  2. 单击“查看所有进程”(以管理员身份运行,否则无法设置处理器相关性)
  3. 右键单击模拟器.exe并选择设置亲缘性…
  4. 在Set Affinity对话框中,只选择最后一个CPU

注意:当您以这种方式更改关联时,它只在流程的生命周期内更改。下一次开始,你必须再来一次。

enter image description here

在今年谷歌I/O(2011)上,谷歌演示了一个更快的模拟器。问题不在于ARM和x86之间的字节码,而在于QEMU执行的软件渲染。我认为它们绕过QEMU的渲染,直接将渲染发送到X服务器。他们展示了一款具有出色性能和fps的汽车游戏。

我想知道什么时候开发者可以使用……

编辑虽然使用英特尔图像获得一些性能增益,但使用Genymotion获得的性能要大得多。看到保罗·拉默茨马的回答是

以前的回答

ADT rev 17模拟器支持在Windows和Mac OS x上以虚拟化模式运行x86系统映像,这对性能有显著影响。

ADT rev 17注释: http://android-developers.blogspot.jp/2012/03/updated-sdk-tools-and-adt-revision-17.html < / p >

配置虚拟机加速: http://developer.android.com/guide/developing/devices/emulator.html#accel-vm < / p >

官方网页 .

~快50%

窗口:

  • 安装“Intel x86 Emulator Accelerator (HAXM)”= >代码/临时演员
  • 安装“Intel x86 Atom System Images”=> SDK-Manager/Android 2.3.3
  • 转到Android SDK根文件夹,并导航到extras\intel\Hardware_Accelerated_Execution_Manager。执行IntelHaxm.exe文件进行安装。(在Android Studio中,您可以导航到:设置-> Android SDK -> SDK工具-> Intel x86模拟器加速器(HAXM安装程序))

  • 用“Intel atom x86”CPU/ABI创建AVD

  • 运行模拟器并检入正在运行的HAXM控制台(打开命令提示符窗口并执行命令:sc query intelhaxm)

enter image description here

别忘了安装这个

enter image description here

备注:在AVD创建过程中添加模拟内存:硬件/新/设备ram大小/设置值512或更多

Linux:

  • 安装KVM:打开谷歌,写“KVM installation”
  • 用“Intel atom x86”CPU/ABI创建AVD
  • 从命令行运行:emulator -avd avd_name -qemu -m 512 -enable-kvm
  • 或者从Eclipse运行:运行/运行配置/标签“目标”- >检查Intel x86 AVD,并在“附加模拟器命令行选项”窗口添加:-qemu -m 512 -enable-kvm(单击运行)

enter image description here

P.S. __abc0, __abc1

os x:

  • 在“Android SDK管理器”中安装Intel x86 Atom System Image
  • 在Android SDK管理器中,安装Intel x86 Emulator Accelerator (HAXM)
  • 在finder中,转到Intel Emulator Accelerator的安装位置并安装IntelHAXM(打开dmg并运行安装)。您可以通过将鼠标放在SDK管理器中的Emulator Accelerator条目上来查找位置。
  • 创建或更新AVD,并指定Intel Atom x86作为CPU。 Intel x86模拟器加速器(HAXM)显示位置

附注:检查这个工具,非常方便甚至试验

我一直在使用英特尔(86)CPU/ABI。我用ARM(armeabi-v7a)创建了另一个模拟器,我发现速度有了很大的提高。我使用的是平台4.1.2 API级别16

只是想说,在我安装了英特尔HAXM加速器并使用英特尔Atom映像后,模拟器的运行速度似乎快了50倍。差别是惊人的,看看吧!

http://www.developer.com/ws/android/development-tools/haxm-speeds-up-the-android-emulator.html

启用GPU硬件加速(除了Intel的HAXM),如果你使用API 15 v3或更新版本和SDK Tools v17+。模拟器的图形加速利用开发计算机的图形硬件,特别是图形处理单元(GPU),使屏幕绘制速度更快。这大大提高了速度。

在模拟器上启用默认启用的图形加速:当创建AVD时,在“硬件”部分,单击“新建”,选择“GPU仿真”并将值设置为“是”。

仅在运行时启用加速:在启动模拟器时使用-gpu标志,如下所示:

emulator -avd <avd_name> -gpu on

来源:谷歌的使用模拟器教程

我想建议给Genymotion一个旋转。它运行在Oracle的VirtualBox上,在一个中等的系统上可以达到60帧/秒。

下面是我的一个工作室的屏幕截图,运行在低端的2012款MacBook Air上:

Nexus 7模拟器运行在56.6 fps

如果你看不懂文字,这是一个以56.6帧/秒运行的Nexus 7模拟器。额外的(大!)奖励是谷歌播放和谷歌播放服务与虚拟机打包。

(演示动画的来源可以在这里找到。)

谢谢@zest!效果很好。一些注意事项:需要应用英特尔的热修复HAXM处理内核恐慌问题:http://software.intel.com/en-us/android/articles/intel-hardware-accelerated-execution-manager 另外,请注意,如果你有多个abi,你需要卸载一个,因为最新版本的Android API (r19): https://code.google.com/p/android/issues/detail?id=66740中的错误(在这种情况下删除armeabi-v7a,因为你想要x86 abi)。除了花了我45分钟来解决这些问题外,这是一个非常有益的练习,因为它提高了模拟器的性能

谷歌最近发布了一款新的Android模拟器。它比旧的更快更好。你可以找到更多关于它的信息在这里

更新当前的Android Studio到Android Studio 2.0,同时更新系统映像。

Android Studio 2.0模拟器的运行速度比Android之前的模拟器快3倍,通过ADB的增强,您现在可以将应用程序和数据推送到模拟器,比推送到物理设备快10倍。与物理设备一样,官方Android模拟器也内置了谷歌播放服务,因此您可以测试更多的API功能。最后,新的模拟器具有丰富的新功能来管理呼叫、电池、网络、GPS等。

你也可以尝试Visual Studio Android模拟器,它也可以作为一个独立的模拟器安装(你不需要Visual Studio)。请注意,它只能安装在Windows Pro或更高的系统上。

使用Genymotion代替模拟器。Genymotion的性能更好 https://www.genymotion.com < / p >

如果你没有一个好的显卡(像我一样),选择一个低分辨率的模拟器(例如:Nexus S)

启用这个选项对我很有效。

AVD经理->选择设备,点击编辑->启用“使用主机图形处理器”选项

enter image description here

好吧,问题是从2011年开始的,我在2022年回答,根据我的经验,最好的答案是从命令启动模拟器,这样模拟器就会启动一个专用进程,而不是android studio的子进程。如果进程是独立的,那么它将能够正确地使用GPU,并可以利用所有资源,不像从设备管理器启动模拟器。 你可以从设备管理器中创建AVD,并从下面的AVD文件夹中独立启动模拟器

如何打开模拟器命令行