使Android模拟器运行得更快

时间:2010-04-18 15:02:14

标签: android performance testing android-emulator emulation

Android模拟器有点迟钝。对于某些设备,如Motorola Droid和Nexus One,应用程序在实际设备中的运行速度比模拟器快。这在测试游戏和视觉效果时是个问题。

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

20 个答案:

答案 0 :(得分:221)

Official web page

快50%

视窗:

  • 安装“Intel x86仿真器加速器(HAXM)”=> SDK-经理/附加
  • 安装“Intel x86 Atom系统映像”=> 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

P.S。在AVD创建期间添加仿真存储器:硬件/新建/设备柱塞尺寸/设置值512或更多

Linux的:

  • 安装KVM:打开GOOGLE,写“kvm installation”
  • 使用“Intel atom x86”CPU / ABI
  • 创建AVD
  • 从命令行运行:emulator -avd avd_name -qemu -m 512 -enable-kvm
  • 或从Eclipse运行:运行/运行配置/选项卡“目标” - >检查Intel x86 AVD并在“Additional Emulator Command Line Options”窗口中添加:-qemu -m 512 -enable-kvm(单击Run)

enter image description here

P.S。 For Fedorafor Ubuntu

OS-X:

  • 在Android SDK Manager中,安装Intel x86 Atom System Image
  • 在Android SDK Manager中,安装Intel x86仿真器加速器(HAXM)
  • 在Finder中,转到Intel Emulator Accelerator的安装位置并安装IntelHAXM(打开dmg并运行安装)。您可以将鼠标放在SDK Manager中的Emulator Accelerator条目上找到该位置。
  • 创建或更新AVD并指定Intel Atom x86作为CPU。 Intel x86 Emulator Accelerator (HAXM) showing Location

P.S:检查此工具,即使trial

也非常方便

答案 1 :(得分:34)

更新:现在有了一个Intel x86图像,最好的答案是上面的热情。

正如CommonsWare正确指出的那样,仿真器很慢,因为它模拟了一个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)。
  3. 我发现这两项变化已经有了大约50%的改善

    在Windows 7上设置处理器关联:

    1. 打开任务管理器
    2. 单击“查看所有进程”(以管理员身份运行,否则无法设置处理器关联性)
    3. 右键单击emulator.exe并选择Set Affinity ...
    4. 在Set Affinity对话框中,仅选择最后一个CPU
    5. 注意:以这种方式更改关联时,它仅在进程的生命周期内更改。接下来开始,你必须再做一次。

      enter image description here

答案 2 :(得分:16)

我想建议给Genymotion一个旋转。它运行在Oracle的VirtualBox中,并且在中等系统上合法地达到60 fps。

这是我的一个研讨会的屏幕截图,运行在2012款低端MacBook Air上:

Nexus 7 emulator running at 56.6 fps

如果您无法阅读文本,那么它是以56.6 fps运行的Nexus 7模拟器。额外的(大!)奖金是Google Play和Google Play服务与虚拟机一起打包。

(演示动画的来源can be found here。)

答案 3 :(得分:11)

启用 GPU硬件加速(除了Intel的HAXM),如果您使用的是API 15 v3或更高版本以及SDK Tools v17 +。仿真器的图形加速利用了开发计算机的图形硬件,特别是其图形处理单元(GPU),可以更快地进行屏幕绘制。这显着提高了速度。

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

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

emulator -avd <avd_name> -gpu on

来源:Google's Using the Emulator tutorial

答案 4 :(得分:9)

编辑尽管使用英特尔图像可以获得一些性能提升,但使用Genymotion所获得的性能要高得多。请参阅Paul Lammertsma's answer

上一个答案

借助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

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

答案 5 :(得分:7)

我最近从带有3gb ram的核心2 @ 2.5切换到带有8gb ram的i7 @ 1.73(两个系统都运行Ubuntu 10.10),模拟器现在运行速度至少快两倍。投入更多硬件肯定会有所帮助。

答案 6 :(得分:6)

我只想说在安装英特尔HAXM加速器并使用英特尔凌动图像后,仿真器的运行速度似乎提高了50倍。区别是惊人的,看看吧!

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

答案 7 :(得分:4)

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

硬件方面,获得可用于单核应用程序的最快CPU。超过2个内核在仿真器性能方面可能没有太大差异。

Eclipse + Android模拟器一起吃掉了大量的RAM。至少因为我使用了2 GB的RAM系统,我建议使用3 GB的RAM,因为系统耗尽了RAM并开始使用页面文件,所以它速度变慢了。

我认为最好的CPU可能会有一个高时钟(仅使用时钟作为同一系列中CPU的测量btw),很好地处理非SIMD操作,并具有turbo boost机制。没有很多基于Java的基准测试,但总体上寻找压缩和办公等应用程序基准测试。不要看游戏或媒体,因为这些受到SIMD的影响很大。如果你找到了Java,那就更好了。

答案 8 :(得分:3)

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

我想知道什么时候开发人员可以使用它......

答案 9 :(得分:3)

谷歌最近宣布推出适用于Android的全新模拟器。它比旧的更快更好。您可以找到有关它的更多信息here

答案 10 :(得分:1)

我认为这是因为clr虚拟机直接使用cpu而没有代码操作码转换。 它可能是clr应用程序的优化,也可能是在INTEL proccessor上启动的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

答案 11 :(得分:1)

谢谢@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分钟解决这些问题之外,就模拟器性能的提升而言,这是一项非常有益的练习。

答案 12 :(得分:0)

启用此选项对我有用。

AVD 管理器 -> 选择设备并单击编辑 -> 启用选项“使用主机 GPU”

enter image description here

答案 13 :(得分:0)

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

答案 14 :(得分:0)

使用Genymotion而不是模拟器。 Genymotion有更好的表现 https://www.genymotion.com

答案 15 :(得分:0)

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

答案 16 :(得分:0)

将您当前的Android Studio更新为Android Studio 2.0并更新系统映像。

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

答案 17 :(得分:0)

我希望这会对你有所帮助。

Goto to your BIOS settings. Enable your Virtualization technology in your settings..

它解决了我的问题...

答案 18 :(得分:0)

模拟器的替代方案是AndroVM虚拟机,其运行速度远远快于仿真器并支持OpenGL加速:

http://androvm.org/

有趣的是,我觉得它比实际的Android设备运行得更快。

答案 19 :(得分:0)

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