为什么Android模拟器运行速度很慢?如何加快Android模拟器的速度?

3537
我有一台配置为2.67 GHz赛扬处理器和1.21 GB的RAM,运行着x86 Windows XP专业版的机器。我的理解是在这样的机器上Android模拟器应该启动得相当快,但对我来说并不是这样。我已经按照设置IDE、SDK、JDK等的所有说明进行了操作,并且有时成功地快速启动模拟器,但这种情况非常少见。如果可能的话,我该如何解决这个问题呢?即使它启动并加载主屏幕,也非常缓慢。我尝试过版本3.5(Galileo)3.4(Ganymede)中的Eclipse IDE

82
备选方案是Genymotion。 https://www.genymotion.com/。这个速度快得多。安装简单直接。 - Sukitha Udugamasooriya
9
我发现模拟器在Linux上运行速度(我指的是非常非常)快。我的笔记本电脑有双引导,Windows系统下启动模拟器需要大约15分钟,而在Linux系统下只需要大约30秒。我不知道其他操作系统如OSX是否也是这样,但感觉像是Windows系统的问题。 - Daniël van den Berg
11
据报道,Android Studio 2.0不仅拥有更快的模拟器,还采用了“即时运行”功能,这使得您在源代码中进行某些更改,例如XML文件,可以在几秒钟内部署到目标设备上,而无需重新构建和部署APK。详情请见http://android-developers.blogspot.co.uk/2015/11/android-studio-20-preview.html。 - Carl Whalley
13
我认为你的内存对于使模拟器运行更快来说非常小。 - Zia U Rahman
9
避免混淆评论的一种方法是添加一个小提示框,说明这个问题已经超过了2年。科技在快速发展,即使问题不应该被关闭/归档,您也希望年龄影响排名。 - Henrik Erlandsson
显示剩余15条评论
77个回答

1469

更新

您现在可以在Android模拟器中启用“快速启动”选项。这将保存模拟器的状态,并且下次启动时它将快速启动。

点击模拟器编辑按钮,然后点击显示高级设置,然后像下面的截图一样启用快速启动

Quick boot

Android开发工具(ADT)9.0.0(或更高版本)具有一个功能,允许您保存AVD(模拟器)的状态,并且可以立即启动模拟器。您必须在创建新的AVD时启用此功能,或者稍后通过编辑AVD来创建它。

此外,我已将设备RAM大小增加到1024,这会使模拟器非常快。

请参考以下截图以获取更多信息。

使用保存快照功能创建新的AVD。

Android emulator with save snapshot feature.

从快照启动模拟器。

Launching the emulator from the snapshot.

为加快模拟器的速度,您可以参考加速Android模拟器!

使用SSD硬盘会对速度产生很大影响,我建议使用更合适的内存(8或更高)。


23
当您更新现有设备时,在第一次启动时从快照中清除用户数据。 - Mark Bakker
16
我将AVD设置成这样,但是重新启动AVD时似乎仍然很慢,为什么? - zhongshu
9
只需进入“窗口 > Android SDK 和 AVD Manager”,从列表中选择要启动的 AVD,然后在右侧窗格中单击“启动”按钮即可打开您想要的相同界面。请注意,不会改变原文的意思。 - Vikas Patidar
3
当设置为1024时,我收到了“无法分配内存”的提示。在配置窗口底部还显示了一个警告:“在Windows上,模拟大于768M的RAM可能会失败...” 我尝试将其设置为770,然后它起作用了。但将其设置为800则失败了。 - awe
5
你可以使用基于Intel x86的HAX工具来进行模拟器,相信我,你会惊讶地发现这个模拟器比你实际设备更快。 - Vikas Patidar
显示剩余22条评论

1150

重要提示:请参考Intel VT列表,确保您的CPU支持Intel VT。

HAXM加速缓慢的Android模拟器

HAXM是“Intel硬件加速执行管理器”的缩写。

目前,它仅支持Intel® VT(Intel虚拟化技术)。

Android模拟器基于QEMU。 QEMU与主机系统上的HAXM驱动程序之间的接口被设计为面向厂商的。

HAXM

配置Android开发环境以支持HAXM的步骤

  1. 更新Eclipse: 确保您的Eclipse安装和ADT插件完全更新。

  2. 更新您的Android工具: 在每次Eclipse插件更新后,重要的是更新您的Android SDK工具。 要使用HAXM,您必须至少处于17版或更高版本。

Enter image description here

  • 下载x86 Atom系统映像Intel硬件加速执行管理器驱动程序。请参考下图:

Enter image description here

  • 通过运行“IntelHaxm.exe”安装HAXM驱动程序。 它将位于以下位置之一:

    • C:\Program Files\Android\android-sdk\extras\intel\Hardware_Accelerated_Execution_Manager

    • C:\Users\<user>\adt-bundle-windows-x86_64\sdk\extras\intel\Hardware_Accelerated_Execution_Manager

    如果安装程序出错,并提示需要开启Intel VT,则需要在BIOS中启用它。请参考以下说明:启用Intel VT(虚拟化技术)

安装 .exe 或 .dmg 文件

  • 创建一个 新的 x86 AVD(Android 虚拟设备):请按照下面的图片操作:

创建 AVD

  • 如果是新的 SDK 版本,请参考下图: Enter image description here

19
不错的文章。如果你正在寻找来自Google的文档(包括Mac上的一些区别),可以在这里找到:http://developer.android.com/tools/devices/emulator.html#accel-vm - Todd Price
107
不适用于Linux操作系统。 - Kshitiz Sharma
14
我尝试了这个解决方案,它有效。但是,我使用MonoDroid安装时一度找不到IntelHaxm.exe。 它在这里:C:\Users\jbarneck\AppData\Local\Android\android-sdk\extras\intel - Rhyous
11
哇,谢谢你太多了!我简直不敢相信我这么长时间都在使用慢速模拟器。我以为那是正常的。 虽然如此,我确实很想念快速的启动时间,有没有办法让GPU加速同时启用快照呢? - Reda
3
做得很好。非常感谢您分享这个! 当启用“使用主机GPU”时,模拟器会出现严重的闪烁,但禁用主机GPU后速度非常快。 - user1619275
显示剩余33条评论

604

尝试使用Android x86。 它比Google Android模拟器快得多。按照以下步骤进行:

  1. 安装VirtualBox
  2. 下载您需要的ISO文件
  3. 创建一个虚拟机,选择Linux 2.6/Other Linux、512MB内存、2GB硬盘。网络设置选择PCnet-Fast III,连接到NAT。您也可以使用桥接适配器,但在您的环境中需要DHCP服务器。
  4. 在模拟器上安装Android x86并运行它。
  5. 按下Alt+F1,输入netcfg,记下IP地址,然后按Alt+F7
  6. 在Windows XP系统上运行cmd,将目录更改为Android工具目录,键入adb connect <virtual_machine_IP>
  7. 启动Eclipse,打开ADT插件,找到设备,愉快地使用吧!

6
所以我连接了。怎样让屏幕竖直显示?我也看不到手机硬件按钮在哪里。 - Alex
9
请参考以下链接了解如何更改屏幕分辨率:http://groups.google.com/group/android-x86/browse_thread/thread/eb93a1a3ad3b149d 和 http://groups.google.com/group/android-x86/browse_thread/thread/93302cfdd30f3572/202fc96508d0200c。 - Gili
4
提醒大家,如果你想在模拟器中使用鼠标,请务必在设备菜单中启用鼠标集成功能!请注意不要改变原意。 - kakopappa
13
请注意,如果您使用的是针对ARM体系结构特定的内容(例如Mono for Android),它将无法在Android x86上运行。 - Matthew Groves
11
对我来说,netcfg正在显示 lo 127.0.0.1 255.0.0.0 0x00000049 这里是我应该在adb命令中提到的127.0.0.1 IP吗?它显示“无法连接到127.0.0.1:5555”请帮忙。 - Riz
显示剩余31条评论

322
更新:最新版本的Android Studio(2.x)对捆绑的模拟器进行了重大改进。它响应快速并具有许多功能。
对于仍然感兴趣的人: 尝试使用Genymotion。注册后,您可以下载Windows / Mac OS X / Linux版本。Eclipse的插件也可用:

可以通过启动Eclipse并转到“帮助/安装新软件”菜单来安装插件,然后只需添加具有以下URL的新更新站点:http://plugins.genymotion.com/eclipse。按照Eclipse指示的步骤操作。

此模拟器速度快且响应快。
GenyMotion允许您控制设备的各种传感器,包括电池电量,信号强度和GPS。最新版本现在还包含相机工具。

53
Genymotion是开发/测试应用程序迄今为止最好的方法。它不仅比传统模拟器更快、更好,而且比真实设备更快。我使用它进行99.99%的部署,因为这意味着我可以在较短时间内看到结果。它还意味着我可以使用OpenGL ES和其他在普通模拟器上不可用的功能。 - Eurig Jones
2
Genymotion的新版本不包括GooglePlay服务。此链接展示了如何手动安装它们:forum.xda-developers.com/showthread.php?t=2528952 - Apfelsaft
2
只要您重新安装VBox或任何他们使用的工具,它就会停止工作 - 卸载也无济于事。但是在它持续的时间内,它还是不错的。 - milosmns
5
Genymotion不再免费(上一次我使用时是免费的),不确定它是否仍然是开发者的最佳选择。 - Zain Ali
6
自从 Android Studio 2 推出以来,模拟器已经十分改进。它有很多功能,而且表现良好。 - blaffie
显示剩余9条评论

219

你所使用的(旧版)Eclipse中的模拟器非常缓慢。

近年来的模拟器比2010年的快了很多。请更新您的SDK/IDE。

个人而言,我使用真实手机进行测试。这样更快且测试更加真实。但如果你想在许多不同的Android版本上测试你的应用程序,又不想购买几部手机,那么您将不得不有时使用模拟器。


1
VMware在性能上与真实机器相比没有明显的差异。即使模拟器正在模拟ARM,它也应该更快,即使在相同的系统频率下,我的PC只有3.6GHz,比500MHz的安卓手机还要慢。 - NickSoft
@rds - 那么我的AVD是不是应该模拟英特尔而不是ARM,这样它才能更快地加载? - Trojan.ZBOT
不,这不是针对x86进行优化的...它是模拟x86手机硬件 - 而现今普通的手机轻易地超越了所讨论的这台机器的性能 :) - Martin Zeitler
你应该意识到两者都在运行相同的模拟器,android-sdk\tools\emulator-x86.exe,与Eclipse无关,你可能只是开始使用Intel x86镜像和Intel HAXM。 - Dan Dar3
现在它们运行速度飞快,与过去相比慢得多。 - Bolling
@Bolling:我的经验与此相反,使用VT-x加速的x86_64镜像在x86_64 CPU上运行的速度和流畅度与2012年模拟的ARM-v7镜像一样慢和卡顿。 - Violet Giraffe

140

模拟器的启动非常缓慢。好消息是你只需要一次启动模拟器。如果模拟器已经运行,再次运行您的应用程序时,模拟器将相对快速地重新安装应用程序。当然,如果想知道应用在真机上的运行速度,最好在真机上进行测试。


42
如果需要几个小时,可能还有其他问题。对我来说只需要几分钟。 - Jay Askren
你的硬件配置和操作系统是什么? - Junior Mayhé
@Junior Mayhe:我使用Windows、Mac和Linux编写Android程序。目前我最常用的是Mac。我使用的计算机有2到4 GB的RAM和相当现代的2到3 GHz处理器。在所有情况下,启动模拟器似乎需要几分钟的时间,但重新安装应用程序相当快速。 - Jay Askren
3
在我旧的笔记本电脑上(1.6GHz双核,1GB RAM),将新的apk加载到已经运行的模拟器中最多只需要10秒钟。唯一的问题是我经常忘记让模拟器保持运行状态,所以我必须经历缓慢的重新启动过程(需要3-5分钟)。 - Lie Ryan
@LieRyan "不应该超过10秒",可悲的是,在今天的机器上,一个类似大小的 C++ 项目大约需要这么长时间。 - kizzx2

132

英特尔在2012年5月15日发布了适用于ICS模拟器的推荐安装说明。对我而言,这很有效,现在模拟器速度更快,用户界面更加流畅。

指南的前半部分足够详细,因此我假设您已经能够使用Android SDK管理器安装了英特尔x86 Atom系统映像以及Intel HAXM。

现在,为了确保所有其他内容都设置正确,以便享受高性能的模拟器:

并启动它:

sudo kextload -b com.intel.kext.intelhaxm (mac)
如果HAXM正常工作,您在启动模拟器时可能会看到此消息:

HAX is working and emulator runs in fast virtual mode

否则,您可能会看到以下错误:

HAX is not working and the emulator runs in emulation mode emulator:
Failed to open the hax module

  • 使用GPU仿真。当前版本无法在使用GPU仿真时使用快照选项。确保将GPU仿真设置为“是”。

  • 将设备内存设置为1024 MB或更多,但不要超过Intel HAXM设置。我每个设备使用1024 MB和2048用于HAXM。

保存后始终仔细检查设置!模拟器非常挑剔,它会在不告诉您的情况下恢复配置。

使用这些设置后,软件键盘不再出现,屏幕上的返回、菜单和最近的键也不再出现。这似乎是当前ICS Intel x86系统映像的局限性。您需要使用键盘快捷键

在Mac OS上,您需要按住fn + control才能使F1 - F12键正常工作。页面上/下/左/右可以使用控制 +箭头键执行。


2
我不确定是否是我的问题,但我紧密遵循指南并获得了以下结果:“HAX正常工作,模拟器在快速虚拟模式下运行”,就在设备启动之前,但是……它实际上的加载速度比原始ARM版本还要慢。我使用的是Mac,CPU支持VT。 - jayarjo
4
这是正确的答案。我安装了Intel x86处理器,并启用了GPU。使用这些设置,模拟器反应非常迅速和流畅。终于成功了!如果你需要在Windows或Mac上进行设置方面的帮助,请告诉我。再见所有人。 - Tony
2
谢谢,已在Windows 7 Pro上测试通过,使用英特尔酷睿i7 3770处理器。在Windows上,只需安装英特尔硬件加速执行管理器(HAXM),它将自动启动。只需创建一个带有英特尔Atom x86的AVD,并确保选择了“使用主机GPU”。 - gerrytan
另一个专业提示,在 Mac 机器上,您可以使用 kextstat 命令获取有关 Intel 内核扩展的其他详细信息,例如 $ kextstat | grep intelhaxm - James Wald
我在使用Eclipse完成工作后,是否需要停止Intel HAXM(因为您说我应该启动它)? - John Brunner
显示剩余7条评论

113

你可以使用以下命令创建emulator.bat文件来启动模拟器,这样它会更快地启动。

emulator.exe -cpu-delay 0 -no-boot-anim @<avd name>

或者在Unix(Mac或Linux版本)上:

emulator -cpu-delay 0 -no-boot-anim @<avd name>

将“-no-boot-anim”添加后,启动时间减少了约38%。谢谢! - Timothy003
3
(Android Studio) 选择Run > Edit Configurations...。在运行/调试配置对话框的左侧面板中,选择或创建一个配置。 在目标设备选项下,选择AVD。 在模拟器选项卡中,在附加命令行选项字段中输入“-no-boot-anim”。 - Ivan Chau

105

我注意到,如果没有连接Dalvik Debug Monitor Server (DDMS),模拟器的启动速度会快得多。因此,如果您从虚拟设备管理器的 "SDK Setup.exe" 启动模拟器并且Eclipse未启动,则模拟器会更快。

如果您从Eclipse启动模拟器:DDMS在那里,所以有时模拟器非常慢,但有时它会更快。


2
@Shekhar:DDMS = Dalvik 调试监视器服务器 - Lie Ryan
如果我们通过Git Bash的Cordova命令行运行模拟器,如何禁用Dalvik Debug Monivor Server呢? - gumuruh

62

我使用过Genymotion,必须说相比默认的Android模拟器,它运行速度较快。 - Anurag
顺便问一下,为什么要使用模拟器?使用真实手机更有意义。我在工作中,我们没有足够的手机供大家使用。我不是测试人员,所以我没有优先权。 - Almo
模拟器不慢,是你的电脑太慢了。建议使用x86映像。 - Martin Zeitler
@Almo,真实手机是一个不错的选择,但模拟器可以让您的应用程序兼容大多数Android版本+在不同屏幕上进行设计,这是让您的应用程序在进入真实手机测试之前运行更少错误的方法。我个人见过一些设计问题可以通过在不同的模拟器中检查来轻松解决...并非所有人都能负担得起至少拥有1部不同操作系统和屏幕尺寸的手机... - Bhuro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接